ไลบรารีการจัดการสตริง PHP พร้อมการรองรับหลายไบต์ เข้ากันได้กับ PHP 5.4+, PHP 7+ และ HHVM
s('string')->toTitleCase()->ensureRight('y') == 'สตริง'
โปรดดูที่สาขา 1.x หรือสาขา 2.x สำหรับเอกสารเก่า
ทำไม
การติดตั้ง
OO และการผูกมัด
อินเทอร์เฟซที่นำไปใช้
การสร้าง PHP 5.6
คงที่สตริง
วิธีการเรียน
สร้าง
วิธีการอินสแตนซ์
ผนวก | ที่ | ระหว่าง | ทำให้เป็นอูฐ |
ตัวอักษร | ยุบช่องว่าง | ประกอบด้วย | มีทั้งหมด |
มีอันใดอันหนึ่ง | นับย่อย | ประจบประแจง | กำหนดเขต |
สิ้นสุดด้วย | ลงท้ายด้วยอะไรก็ได้ | มั่นใจซ้าย | มั่นใจได้เลย |
อันดับแรก | รับการเข้ารหัส | มีตัวพิมพ์เล็ก | มี UpperCase |
htmlถอดรหัส | htmlเข้ารหัส | ทำให้มีมนุษยธรรม | ดัชนีของ |
ดัชนีของLast | แทรก | คืออัลฟ่า | เป็นตัวอักษรและตัวเลข |
isBase64 | ว่างเปล่า | เป็นเลขฐานสิบหก | คือเจสัน |
คือตัวพิมพ์เล็ก | เป็นอนุกรม | เป็นUpperCase | ล่าสุด |
ความยาว | เส้น | คำนำหน้าทั่วไปที่ยาวที่สุด | คำต่อท้ายทั่วไปที่ยาวที่สุด |
LongestCommonSubstring | ตัวพิมพ์เล็กก่อน | เบาะ | เบาะทั้งสอง |
เบาะซ้าย | แพดไรท์ | เติมหน้า | regexแทนที่ |
ลบซ้าย | ลบขวา | ทำซ้ำ | แทนที่ |
ย้อนกลับ | ปลอดภัยตัดทอน | สุ่ม | ซบเซา |
ชิ้น | แยก | เริ่มต้นด้วย | เริ่มต้นด้วยอะไรก็ได้ |
แถบWhitespace | ส่วนย่อย | ล้อมรอบ | swapCase |
เรียบร้อย | ตั้งชื่อ | ถึงAscii | ถึงบูลีน |
ถึงตัวพิมพ์เล็ก | ไปยังช่องว่าง | ไปที่แท็บ | ไปที่TitleCase |
ถึงUpperCase | เล็ม | ตัดซ้าย | ตัดขวา |
ตัด | ขีดเส้นใต้ | อัปเปอร์Camelize | ตัวพิมพ์ใหญ่ก่อน |
ส่วนขยาย
การทดสอบ
ใบอนุญาต
ส่วนหนึ่งเกิดจากการขาดการสนับสนุนหลายไบต์ (รวมถึง UTF-8) ในฟังก์ชันสตริงมาตรฐานของ PHP จำนวนมาก แต่ยังเสนอ wrapper OO รอบฟังก์ชันที่เข้ากันได้กับหลายไบต์ของโมดูล mbstring
Stringy จัดการกับนิสัยแปลกๆ บางอย่าง มีฟังก์ชันเพิ่มเติม และหวังว่าจะทำให้การทำงานกับสตริงง่ายขึ้นนิดหน่อย!
// Standard Librarystrtoupper('fòôbàř'); // 'FòôBàř'strlen('fòbàř'); // 10// mbstringmb_strtoupper('fòôbàř'); // 'FÒÔBÀŘ'mb_strlen('fòbàř'); // '6'// Stringys('fòbàř')->toUpperCase(); // 'FÒÔBÀŘ's('fòôbàř')->ความยาว(); // '6'
หากคุณใช้ Composer เพื่อจัดการการขึ้นต่อกัน คุณสามารถรวมสิ่งต่อไปนี้ในไฟล์ composer.json ของคุณได้
"ต้องการ": {"danielstjules/stringy": "~3.1.0"}
จากนั้น หลังจากรัน composer update
หรือ php composer.phar update
คุณสามารถโหลดคลาสโดยใช้การโหลดอัตโนมัติของ Composer:
ต้องการ 'ผู้ขาย/autoload.php';
มิฉะนั้น คุณสามารถขอไฟล์ได้โดยตรง:
need_once 'เส้นทาง/to/Stringy/src/Stringy.php';
และไม่ว่าในกรณีใด ฉันขอแนะนำให้ใช้นามแฝง
ใช้ StringyStringy เป็น S;
โปรดทราบว่า Stringy อาศัยโมดูล mbstring
สำหรับการรองรับมัลติไบต์พื้นฐาน หากไม่พบโมดูล Stringy จะใช้ symfony/polyfill-mbstring ex-mbstring เป็นโมดูลที่ไม่ใช่ค่าเริ่มต้น แต่เป็นโมดูลที่ใช้กันทั่วไปมาก ตัวอย่างเช่น สำหรับ debian และ ubuntu จะรวมอยู่ใน libapache2-mod-php5, php5-cli และ php5-fpm สำหรับผู้ใช้ OSX นี่เป็นค่าเริ่มต้นสำหรับ PHP ทุกเวอร์ชันที่ติดตั้งโฮมบรูว์ หากรวบรวม PHP ตั้งแต่เริ่มต้น ก็สามารถรวมไว้ในแฟล็ก --enable-mbstring
ได้
ไลบรารีเสนอวิธีการผูกมัด OO ดังที่แสดงด้านล่าง:
ใช้ StringyStringy เป็น S;echo S::create('fòô bàř')->collapseWhitespace()->swapCase(); // 'ฟู่ บู้'
StringyStringy
มีเมธอด __toString() ซึ่งส่งคืนสตริงปัจจุบันเมื่อวัตถุถูกใช้ในบริบทสตริง เช่น: (string) S::create('foo') // 'foo'
StringyStringy
ใช้อินเทอร์เฟซ IteratorAggregate
ซึ่งหมายความว่า foreach
สามารถใช้กับอินสแตนซ์ของคลาสได้:
$stringy = S::create('fòôbàř');foreach ($stringy as $char) {echo $char; }// 'fòôbàř'
ใช้อินเทอร์เฟซ Countable
ทำให้สามารถใช้ count()
เพื่อดึงจำนวนอักขระในสตริง:
$stringy = S::create('fòô');count($stringy); // 3
นอกจากนี้ยังมีการใช้อินเทอร์เฟซ ArrayAccess
ด้วยเหตุนี้ isset()
จึงสามารถใช้เพื่อตรวจสอบว่ามีอักขระในดัชนีที่ระบุอยู่หรือไม่ และเนื่องจาก StringyStringy
ไม่สามารถเปลี่ยนรูปได้ การเรียก offsetSet
หรือ offsetUnset
ใดๆ จะทำให้เกิดข้อยกเว้น อย่างไรก็ตาม offsetGet
ได้ถูกนำมาใช้แล้ว และยอมรับทั้งดัชนีเชิงบวกและเชิงลบ ดัชนีที่ไม่ถูกต้องส่งผลให้เกิด OutOfBoundsException
$stringy = S::create('bàř');echo $stringy[2]; // 'ř'echo $stringy[-2]; // 'à'isset($stringy[-4]); // 'à'isset($stringy[-4]); // false$stringy[3]; // OutOfBoundsException$stringy[2] = 'a'; // ข้อยกเว้น
ตั้งแต่ PHP 5.6 เป็นต้นไป use function
จะพร้อมใช้งานสำหรับการนำเข้าฟังก์ชันต่างๆ Stringy เปิดเผยฟังก์ชันเนมสเปซ Stringycreate
ซึ่งส่งเสียงพฤติกรรมเดียวกันกับ StringyStringy::create()
หากใช้งาน PHP 5.6 หรือรันไทม์อื่นที่รองรับไวยากรณ์ของ use function
คุณสามารถใช้ประโยชน์จาก API ที่เรียบง่ายยิ่งขึ้นได้ดังที่แสดงด้านล่าง:
ใช้ฟังก์ชัน Stringycreate เป็น s;// แทน: S::create('fòô bàř')s('fòô bàř')->collapseWhitespace()->swapCase();
วิธีการทั้งหมดที่อยู่ใน "วิธีการของอินสแตนซ์" มีให้ใช้งานเป็นส่วนหนึ่งของ wrapper แบบคงที่ สำหรับวิธี StaticStringy การเข้ารหัสเพิ่มเติมคาดว่าจะเป็นอาร์กิวเมนต์สุดท้าย ค่าที่ส่งคืนไม่ได้ถูกแปลง และอาจเป็นประเภท Stringy, จำนวนเต็ม, บูลีน ฯลฯ
ใช้ StringyStaticStringy เป็น S;// แปลเป็น Stringy::create('fòôbàř')->slice(0, 3);// ส่งกลับวัตถุ Stringy ด้วยสตริง "fòô"S::slice('fòôbàř', 0, 3);
สร้างวัตถุ Stringy และกำหนดค่าที่ให้มาทั้งคุณสมบัติ str และการเข้ารหัส $str ถูกส่งไปที่สตริงก่อนการกำหนด และหากไม่ได้ระบุ $encoding ระบบจะใช้ค่าเริ่มต้นเป็น mb_internal_encoding() จากนั้นจะส่งกลับวัตถุเริ่มต้น โยน InvalidArgumentException ถ้าอาร์กิวเมนต์แรกเป็นอาร์เรย์หรืออ็อบเจ็กต์ที่ไม่มีเมธอด __toString
$stringy = S::create('fòôbàř'); // 'โฟโอบาร์'
วัตถุที่มีเส้นสายจะไม่เปลี่ยนรูป ตัวอย่างทั้งหมดด้านล่างนี้ใช้การนำเข้าฟังก์ชัน PHP 5.6 และไวยากรณ์อาร์เรย์สั้นของ PHP 5.4 พวกเขายังถือว่าการเข้ารหัสที่ส่งคืนโดย mb_internal_encoding() คือ UTF-8 สำหรับรายละเอียดเพิ่มเติม โปรดดูเอกสารประกอบสำหรับวิธีการสร้างด้านบน รวมถึงหมายเหตุเกี่ยวกับการสร้าง PHP 5.6
ส่งกลับสตริงใหม่โดยมี $string ต่อท้าย
s('fòô')->ผนวก('bàř'); // 'โฟโอบาร์'
ส่งกลับอักขระที่ $index โดยดัชนีเริ่มต้นที่ 0
s('fòôbàř')->ที่(3); // 'ข'
ส่งกลับสตริงย่อยระหว่าง $start และ $end หากพบ หรือเป็นสตริงว่าง อาจมีการจัดหาออฟเซ็ตเผื่อเลือกเพื่อเริ่มการค้นหาสตริงเริ่มต้น
s('{foo} และ {bar}')->between('{', '}'); // 'ฟู'
ส่งคืนค่าสตริงเวอร์ชัน CamelCase ตัดช่องว่างโดยรอบ เปลี่ยนตัวอักษรให้เป็นตัวพิมพ์ใหญ่ตามตัวเลข ช่องว่าง ขีดกลาง และขีดล่าง และลบช่องว่าง ขีดกลาง และขีดล่าง
s('Camel-Case')->camelize(); // 'camelCase'
ส่งกลับอาร์เรย์ที่ประกอบด้วยอักขระในสตริง
s('fòôbàř')->chars(); // ['f', 'ò', 'ô', 'b', 'à', 'ř']
ตัดสตริงและแทนที่อักขระช่องว่างที่ต่อเนื่องกันด้วยช่องว่างเดียว ซึ่งรวมถึงแท็บและอักขระขึ้นบรรทัดใหม่ ตลอดจนช่องว่างหลายไบต์ เช่น พื้นที่บาง และพื้นที่เชิงอุดมคติ
s(' Ο συγγραφέας ')->ยุบWhitespace(); // 'Ο συγγραφέας'
คืนค่าเป็นจริงหากสตริงมี $needle หากเป็นค่า false มิฉะนั้น ตามค่าเริ่มต้น การเปรียบเทียบจะพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่สามารถทำให้ไม่คำนึงถึงตัวพิมพ์ได้โดยตั้งค่า $caseSensitive เป็นเท็จ
s('Ο συγγραφέας είπε')->มี('συγγραφέας'); // จริง
คืนค่าเป็นจริงหากสตริงมี $needles ทั้งหมด หากเป็นค่า false มิฉะนั้น ตามค่าเริ่มต้น การเปรียบเทียบจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่สามารถทำให้ไม่คำนึงถึงตัวพิมพ์ได้โดยตั้งค่า $caseSensitive เป็นเท็จ
s('foo & bar')->containsAll(['foo', 'bar']); // จริง
คืนค่าเป็นจริงหากสตริงมี $needles มิฉะนั้นจะเป็นเท็จ ตามค่าเริ่มต้น การเปรียบเทียบจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่สามารถทำให้ไม่คำนึงถึงตัวพิมพ์ได้โดยตั้งค่า $caseSensitive เป็นเท็จ
s('str มี foo')->containsAny(['foo', 'bar']); // จริง
ส่งกลับจำนวนครั้งของ $substring ในสตริงที่กำหนด ตามค่าเริ่มต้น การเปรียบเทียบจะพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่สามารถทำให้ไม่คำนึงถึงตัวพิมพ์ได้โดยตั้งค่า $caseSensitive เป็นเท็จ
s('Ο συγγραφέας είπε')->countSubstr('α'); // 2
ส่งกลับสตริงตัวพิมพ์เล็กและตัดแต่งโดยคั่นด้วยเครื่องหมายขีดกลาง เครื่องหมายขีดกลางจะถูกแทรกก่อนอักขระตัวพิมพ์ใหญ่ (ยกเว้นอักขระตัวแรกของสตริง) และแทนที่ช่องว่างและขีดล่าง
s('fooBar')->dasherize(); // 'fo-bar'
ส่งคืนตัวพิมพ์เล็กและสตริงที่ถูกตัดแต่งโดยคั่นด้วยตัวคั่นที่กำหนด ตัวคั่นจะถูกแทรกก่อนอักขระตัวพิมพ์ใหญ่ (ยกเว้นอักขระตัวแรกของสตริง) และแทนที่ช่องว่าง ขีดกลาง และขีดล่าง ตัวคั่นอัลฟ่าจะไม่ถูกแปลงเป็นตัวพิมพ์เล็ก
s('fooBar')->delimit('::'); // 'foo::bar'
คืนค่าเป็นจริงหากสตริงลงท้ายด้วย $substring หากไม่ใช่จะเป็นเท็จ ตามค่าเริ่มต้น การเปรียบเทียบจะพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่สามารถทำให้ไม่คำนึงถึงตัวพิมพ์ได้โดยตั้งค่า $caseSensitive เป็นเท็จ
s('fòôbàř')->endsWith('bàř'); // จริง
คืนค่าเป็นจริงหากสตริงลงท้ายด้วย $substrings ใดๆ มิฉะนั้นจะเป็นเท็จ ตามค่าเริ่มต้น การเปรียบเทียบจะพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่สามารถทำให้ไม่คำนึงถึงตัวพิมพ์ได้โดยตั้งค่า $caseSensitive เป็นเท็จ
s('fòôbàř')->endsWithAny(['bàř', 'baz']); // จริง
ตรวจสอบให้แน่ใจว่าสตริงเริ่มต้นด้วย $substring หากไม่เป็นเช่นนั้น จะมีการจัดเตรียมไว้ล่วงหน้า
s('foobar')->ensureLeft('http://'); // 'http://foobar'
ตรวจสอบให้แน่ใจว่าสตริงลงท้ายด้วย $substring หากไม่เป็นเช่นนั้น ระบบจะต่อท้าย
s('foobar')->ensureRight('.com'); // 'foobar.com'
ส่งกลับอักขระ $n ตัวแรกของสตริง
s('fòôbàř')->แรก(3); // 'โฟ'
ส่งกลับการเข้ารหัสที่ใช้โดยวัตถุ Stringy
s('fòôbàř')->getEncoding(); // 'UTF-8'
คืนค่าเป็นจริงหากสตริงมีอักขระตัวพิมพ์เล็ก หากไม่ใช่จะเป็นเท็จ
s('fòbàř')->hasLowerCase(); // จริง
คืนค่าเป็นจริงหากสตริงมีอักขระตัวพิมพ์ใหญ่ หากเป็นอย่างอื่นจะเป็นเท็จ
s('fòbàř')->hasUpperCase(); // เท็จ
แปลงเอนทิตี HTML ทั้งหมดให้เป็นอักขระที่เกี่ยวข้อง นามแฝงของ html_entity_decode สำหรับรายการแฟล็ก โปรดดูที่ http://php.net/manual/en/function.html-entity-decode.php
s('&')->htmlถอดรหัส(); -
แปลงอักขระที่เกี่ยวข้องทั้งหมดให้เป็นเอนทิตี HTML นามแฝงของ htmlentities อ้างถึง http://php.net/manual/en/function.htmlentities.php สำหรับรายการแฟล็ก
s('&')->htmlเข้ารหัส(); // '&'
เปลี่ยนคำแรกของสตริงให้เป็นตัวพิมพ์ใหญ่ แทนที่ขีดล่างด้วยการเว้นวรรค และตัดแถบ '_id'
s('author_id')->ทำให้มีมนุษยธรรม(); // 'ผู้เขียน'
ส่งกลับดัชนีของ $needle ที่เกิดขึ้นครั้งแรกในสตริง และคืนค่าเป็นเท็จหากไม่พบ ยอมรับออฟเซ็ตเผื่อเลือกเพื่อเริ่มต้นการค้นหา ดัชนีลบค้นหาจากจุดสิ้นสุด
s('string')->indexOf('ing'); // 3
ส่งกลับดัชนีของ $needle ที่เกิดขึ้นครั้งล่าสุดในสตริง และคืนค่าเป็นเท็จหากไม่พบ ยอมรับออฟเซ็ตเผื่อเลือกเพื่อเริ่มต้นการค้นหา ค่าออฟเซ็ตอาจเป็นค่าลบในการนับจากอักขระตัวสุดท้ายในสตริง
s('foobarfoo')->indexOfLast('foo'); // 10
แทรก $substring ลงในสตริงที่ $index ที่ให้ไว้
s('fòbř')->insert('à', 4); // 'โฟโอบาร์'
คืนค่าเป็นจริงหากสตริงมีเพียงตัวอักษรตัวอักษรเท่านั้น ถ้าเป็นอย่างอื่นจะเป็นเท็จ
s('丹尼爾')->isAlpha(); // จริง
คืนค่าเป็นจริงหากสตริงมีเพียงตัวอักษรและตัวเลขเท่านั้น หากเป็นอย่างอื่นจะเป็นเท็จ
s('ดาเนียล1')->isAlphanumeric(); // จริง
คืนค่าเป็นจริงหากสตริงเข้ารหัส base64 หากไม่เป็นเช่นนั้น ให้คืนค่าเป็นเท็จ
s('Zm9vYmFy')->isBase64(); // จริง
คืนค่าเป็นจริงหากสตริงมีเพียงตัวอักษรช่องว่าง หากไม่เป็นเช่นนั้น ให้คืนค่าเป็นเท็จ
s("nt vf")->isBlank(); // จริง
คืนค่าเป็นจริงหากสตริงมีเพียงอักขระเลขฐานสิบหกเท่านั้น ถ้าเป็นอย่างอื่นจะเป็นเท็จ
s('A102F')->เป็นเลขฐานสิบหก(); // จริง
คืนค่าเป็นจริงหากสตริงเป็น JSON หากเป็นค่า false มิฉะนั้น วิธีนี้แตกต่างจาก json_decode ใน PHP 5.x ตรงที่สอดคล้องกับ PHP 7 และตัวแยกวิเคราะห์ JSON อื่นๆ โดยที่สตริงว่างไม่ถือว่าเป็น JSON ที่ถูกต้อง
s('{"foo": "bar"}')->isJson(); // จริง
คืนค่าเป็นจริงหากสตริงมีเพียงตัวอักษรตัวพิมพ์เล็กเท่านั้น หากเป็นอย่างอื่นจะเป็นเท็จ
s('fòbàř')->isLowerCase(); // จริง
คืนค่าเป็นจริงหากสตริงเป็นแบบอนุกรม มิฉะนั้นจะคืนค่าเป็นเท็จ
s('a:1:{s:3:"foo";s:3:"bar";}')->isSerialized(); // จริง
คืนค่าเป็นจริงหากสตริงมีเพียงตัวอักษรตัวพิมพ์ใหญ่เท่านั้น หากเป็นอย่างอื่นจะเป็นเท็จ
s('FÒÔBÀŘ')->isUpperCase(); // จริง
ส่งกลับอักขระ $n ตัวสุดท้ายของสตริง
s('fòôbàř')->สุดท้าย(3); // 'บาร์'
ส่งกลับความยาวของสตริง นามแฝงสำหรับฟังก์ชัน mb_strlen() ของ PHP
s('fòôbàř')->ความยาว(); // 6
แยกการขึ้นบรรทัดใหม่และการขึ้นบรรทัดใหม่ โดยส่งคืนอาร์เรย์ของอ็อบเจ็กต์ Stringy ที่สอดคล้องกับบรรทัดในสตริง
s("fòôrnbàřn")->เส้น(); // ['fòô', 'bàř', '']
ส่งกลับคำนำหน้าทั่วไปที่ยาวที่สุดระหว่างสตริงและ $otherStr
s('foobar')->longestCommonPrefix('foobaz'); // 'ฟูบา'
ส่งกลับคำต่อท้ายร่วมที่ยาวที่สุดระหว่างสตริงและ $otherStr
s('fòbàř')->longestCommonSuffix('fòrbàř'); // 'บาร์'
ส่งกลับสตริงย่อยทั่วไปที่ยาวที่สุดระหว่างสตริงและ $otherStr ในกรณีของความสัมพันธ์ มันจะคืนค่าสิ่งที่เกิดขึ้นก่อน
s('foobar')->longestCommonSubstring('boofar'); // 'อู'
แปลงอักขระตัวแรกของสตริงที่ให้มาเป็นตัวพิมพ์เล็ก
s('Σ foo')->ตัวพิมพ์เล็กFirst(); // 'σ ฟู'
แพดสตริงตามความยาวที่กำหนดด้วย $padStr หากความยาวน้อยกว่าหรือเท่ากับความยาวของสตริง จะไม่มีการเสริมเกิดขึ้น สตริงเริ่มต้นที่ใช้สำหรับการเติมคือการเว้นวรรค และประเภทเริ่มต้น (หนึ่งใน 'ซ้าย', 'ขวา', 'ทั้งสอง') คือ 'ขวา' พ่น InvalidArgumentException หาก $padType ไม่ใช่หนึ่งใน 3 ค่าดังกล่าว
s('fòôbàř')->pad(9, '-/', 'left'); // '-/-fòôbàř'
ส่งกลับสตริงใหม่ที่มีความยาวที่กำหนด โดยที่ทั้งสองด้านของสตริงมีเบาะ นามแฝงสำหรับ pad() โดยมี $padType เป็น 'both'
s('foo bar')->padBoth(9, ' '); // 'ฟูบาร์'
ส่งกลับสตริงใหม่ที่มีความยาวที่กำหนด โดยที่จุดเริ่มต้นของสตริงมีเบาะ นามแฝงสำหรับ pad() โดยมี $padType เป็น 'left'
s('foo bar')->padLeft(9, ' '); // 'ฟูบาร์'
ส่งกลับสตริงใหม่ที่มีความยาวที่กำหนด โดยที่ส่วนท้ายของสตริงมีเบาะ นามแฝงสำหรับ pad() โดยมี $padType เป็น 'right'
s('foo bar')->padRight(10, '_*'); // 'foo bar_*_'
ส่งกลับสตริงใหม่ที่เริ่มต้นด้วย $string
s('bàř')->เติมหน้า('fòô'); // 'โฟโอบาร์'
แทนที่ $pattern ที่เกิดขึ้นทั้งหมดใน $str ด้วย $replacement นามแฝงสำหรับ mb_ereg_replace() โปรดทราบว่าตัวเลือก 'i' ที่มีรูปแบบหลายไบต์ใน mb_ereg_replace() ต้องใช้ PHP 5.6+ เพื่อให้ได้ผลลัพธ์ที่ถูกต้อง นี่เป็นเพราะขาดการสนับสนุนในเวอร์ชันรวมของ Oniguruma ใน PHP < 5.6 และเวอร์ชันปัจจุบันของ HHVM (3.8 และต่ำกว่า)
s('fòô ')->regexReplace('f[òô]+s', 'bàř'); // 'bàř's('fò')->regexReplace('(ò)', '1ô'); // 'โฟ'
ส่งคืนสตริงใหม่โดยนำคำนำหน้า $substring ออก หากมี
s('fòbàř')->removeLeft('fòô'); // 'บาร์'
ส่งคืนสตริงใหม่โดยนำคำต่อท้าย $substring ออก หากมี
s('fòôbàř')->removeRight('bàř'); // 'โฟ'
ส่งกลับสตริงที่ซ้ำกันโดยมีตัวคูณ นามแฝงสำหรับ str_repeat
s('α')->ทำซ้ำ(3); // 'อัลฟ่า'
แทนที่ $search ใน $str ที่เกิดขึ้นทั้งหมดด้วย $replacement
s('fòô bàř fòô bàř')->replace('fòô ', ''); // 'บาร บาร'
ส่งกลับสตริงที่กลับรายการ strrev() เวอร์ชันหลายไบต์
s('fòôbàř')->ย้อนกลับ(); // 'ชาโบฟ'
ตัดทอนสตริงตามความยาวที่กำหนด ขณะเดียวกันก็ให้แน่ใจว่าจะไม่แยกคำ หากมีการระบุ $substring และเกิดการตัดทอน สตริงจะถูกตัดทอนเพิ่มเติมเพื่อให้สามารถต่อท้ายสตริงย่อยได้โดยไม่เกินความยาวที่ต้องการ
s('วันนี้คุณมีแผนอย่างไร')->safeTruncate(22, '...');// 'คุณมีแผนอย่างไร...'
ฟังก์ชัน str_shuffle() หลายไบต์ มันจะส่งคืนสตริงพร้อมอักขระตามลำดับแบบสุ่ม
s('fòôbàř')->สับเปลี่ยน(); // 'àôřbòf'
แปลงสตริงให้เป็นกระสุน URL ซึ่งรวมถึงการแทนที่อักขระที่ไม่ใช่ ASCII ด้วยค่าเทียบเท่า ASCII ที่ใกล้เคียงที่สุด ลบอักขระที่ไม่ใช่ ASCII และที่ไม่ใช่ตัวอักษรและตัวเลขที่เหลืออยู่ และแทนที่ช่องว่างด้วย $replacement การแทนที่จะมีค่าเริ่มต้นเป็นขีดเดียว และสตริงจะถูกแปลงเป็นตัวพิมพ์เล็กด้วย ภาษาของสตริงต้นฉบับยังสามารถระบุสำหรับการทับศัพท์เฉพาะภาษาได้
s('การใช้สตริงเช่น fòô bàř')->slugify(); // 'โดยใช้-strings-like-foo-bar'
ส่งกลับสตริงย่อยที่เริ่มต้นที่ $start และสูงถึง แต่ไม่รวมดัชนีที่ระบุโดย $end หากละเว้น $end ฟังก์ชันจะแยกสตริงที่เหลือ ถ้า $end เป็นลบ จะคำนวณจากจุดสิ้นสุดของสตริง
s('fòôbàř')->ชิ้น(3, -1); // 'บา'
แยกสตริงด้วยนิพจน์ทั่วไปที่ให้ไว้ โดยส่งคืนอาร์เรย์ของอ็อบเจ็กต์ Stringy จำนวนเต็มเสริม $limit จะตัดทอนผลลัพธ์
s('foo,bar,baz')->split(',', 2); // ['foo', 'บาร์']
คืนค่าเป็นจริงหากสตริงขึ้นต้นด้วย $substring หากเป็นอย่างอื่นจะเป็นเท็จ ตามค่าเริ่มต้น การเปรียบเทียบจะพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่สามารถทำให้ไม่คำนึงถึงตัวพิมพ์ได้โดยตั้งค่า $caseSensitive เป็นเท็จ
s('FÒÔbàřbaz')->startsWith('fòbàř', false); // จริง
คืนค่าเป็นจริงหากสตริงขึ้นต้นด้วย $substrings ใดๆ มิฉะนั้นจะเป็นเท็จ ตามค่าเริ่มต้น การเปรียบเทียบจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่สามารถทำให้ไม่คำนึงถึงตัวพิมพ์ได้โดยตั้งค่า $caseSensitive เป็นเท็จ
s('FÒÔbàřbaz')->startsWithAny(['fòô', 'bàř'], false); // จริง
ตัดอักขระช่องว่างทั้งหมด ซึ่งรวมถึงแท็บและอักขระขึ้นบรรทัดใหม่ ตลอดจนช่องว่างหลายไบต์ เช่น พื้นที่บาง และพื้นที่เชิงอุดมคติ
s(' Ο συγγραφέας ')->stripWhitespace(); // 'Οσυγγραφέας'
ส่งกลับสตริงย่อยที่เริ่มต้นที่ $start ด้วย $length ที่ระบุ มันแตกต่างจากฟังก์ชัน mb_substr() ตรงที่การระบุ $length เป็น null จะส่งกลับสตริงที่เหลือ แทนที่จะเป็นสตริงว่าง
s('fòôbàř')->substr(2, 3); // 'โอบา'
ล้อมรอบสตริงด้วยสตริงย่อยที่กำหนด
s(' ͜ ')->เซอร์ราวด์('ʘ'); // 'ʘ ͜ ʘ'
ส่งคืนสตริงเวอร์ชันที่สลับเคส
s('Ντανικ')->swapCase(); // 'νΤΑΝΙΛ'
ส่งกลับสตริงที่มีเครื่องหมายคำพูดอัจฉริยะ อักขระจุดไข่ปลา และขีดกลางจาก Windows-1252 (มักใช้ในเอกสาร Word) แทนที่ด้วยค่าเทียบเท่า ASCII
s('"ฉันเห็นแล้ว..."')->tidy(); // '"ฉันเห็น..."'
ส่งกลับสตริงที่ตัดโดยให้อักษรตัวแรกของแต่ละคำเป็นตัวพิมพ์ใหญ่ นอกจากนี้ยังยอมรับอาร์เรย์ $ignore ช่วยให้คุณสามารถแสดงรายการคำที่ไม่ต้องใช้ตัวพิมพ์ใหญ่
$ignore = ['at', 'by', 'for', 'in', 'of', 'on', 'out', 'to', 'the'];s('ฉันชอบดูโทรทัศน์' )->titleize($ignore);// 'ฉันชอบดูโทรทัศน์'
ส่งกลับสตริงเวอร์ชัน ASCII ชุดอักขระที่ไม่ใช่ ASCII จะถูกแทนที่ด้วยอักขระ ASCII ที่ใกล้เคียงที่สุด และส่วนที่เหลือจะถูกลบออกตามค่าเริ่มต้น ภาษาหรือตำแหน่งที่ตั้งของสตริงต้นฉบับสามารถระบุได้สำหรับการทับศัพท์เฉพาะภาษาในรูปแบบใดๆ ต่อไปนี้: en, en_GB หรือ en-GB ตัวอย่างเช่น การส่งผ่าน "de" จะส่งผลให้การจับคู่ "äöü" เป็น "aeoeue" แทนที่จะเป็น "aou" เหมือนในภาษาอื่นๆ
s('fòôbàř')->toAscii(); // 'foobar's('äöü')->toAscii(); // 'aou's('äöü')->toAscii('de'); // 'เอออ'
ส่งคืนค่าการแสดงบูลีนของค่าสตริงลอจิคัลที่กำหนด ตัวอย่างเช่น 'true', '1', 'on' และ 'yes' จะส่งกลับค่า true 'false', '0', 'off' และ 'no' จะส่งกลับค่า false ในทุกกรณี ตัวพิมพ์จะถูกละเว้น สำหรับสตริงตัวเลขอื่นๆ เครื่องหมายจะกำหนดค่าที่ส่งคืน นอกจากนี้ สตริงว่างที่ประกอบด้วยช่องว่างเท่านั้นจะส่งกลับค่าเท็จ สำหรับสตริงอื่นๆ ทั้งหมด ค่าที่ส่งคืนเป็นผลจากการส่งแบบบูลีน
s('ปิด')->toBoolean(); // เท็จ
แปลงอักขระทั้งหมดในสตริงให้เป็นตัวพิมพ์เล็ก นามแฝงสำหรับ mb_strtolower() ของ PHP
s('FÒÔBÀŘ')->toLowerCase(); // 'โฟโอบาร์'
แปลงแต่ละแท็บในสตริงให้เป็นช่องว่างจำนวนหนึ่ง ตามที่กำหนดโดย $tabLength ตามค่าเริ่มต้น แต่ละแท็บจะถูกแปลงเป็นช่องว่างติดต่อกัน 4 ช่อง
s(' String Speech = "สวัสดี"')->toSpaces(); // ' สตริงคำพูด = "สวัสดี"'
แปลงแต่ละช่องว่างจำนวนหนึ่งติดต่อกันตามที่กำหนดโดย $tabLength เป็นแท็บ ตามค่าเริ่มต้น แต่ละช่องว่าง 4 ช่องติดต่อกันจะถูกแปลงเป็นแท็บ
s(' fòô bàř')->toTabs();// ' fòô bàř'
แปลงอักขระตัวแรกของแต่ละคำในสตริงเป็นตัวพิมพ์ใหญ่
s('fòô bàř')->toTitleCase(); // 'โฟบาช'
แปลงอักขระทั้งหมดในสตริงเป็นตัวพิมพ์ใหญ่ นามแฝงสำหรับ mb_strtoupper() ของ PHP
s('fòbàř')->toUpperCase(); // 'ฟูบู้'
ส่งกลับสตริงโดยลบช่องว่างออกจากจุดเริ่มต้นและจุดสิ้นสุดของสตริง รองรับการลบช่องว่าง Unicode ยอมรับสตริงอักขระเผื่อเลือกเพื่อตัดแทนค่าเริ่มต้น
s(' fòôbàř ')->ตัดแต่ง(); // 'โฟโอบาร์'
ส่งกลับสตริงโดยลบช่องว่างออกจากจุดเริ่มต้นของสตริง รองรับการลบช่องว่าง Unicode ยอมรับสตริงอักขระเผื่อเลือกเพื่อตัดแทนค่าเริ่มต้น
s(' fòôbàř ')->trimLeft(); // 'foôbàř'
ส่งกลับสตริงโดยลบช่องว่างออกจากส่วนท้ายของสตริง รองรับการลบช่องว่าง Unicode ยอมรับสตริงอักขระเผื่อเลือกเพื่อตัดแทนค่าเริ่มต้น
s(' fòôbàř ')->trimRight(); // ' โฟโอบาร์'
ตัดทอนสตริงให้มีความยาวที่กำหนด หากมีการระบุ $substring และเกิดการตัดทอน สตริงจะถูกตัดทอนเพิ่มเติมเพื่อให้สามารถต่อท้ายสตริงย่อยได้โดยไม่เกินความยาวที่ต้องการ
s('วันนี้คุณมีแผนอย่างไร')->truncate(19, '...'); // 'คุณเป็นอะไรมาก...'
ส่งกลับตัวพิมพ์เล็กและสตริงที่ตัดโดยคั่นด้วยขีดล่าง เครื่องหมายขีดล่างจะถูกแทรกก่อนอักขระตัวพิมพ์ใหญ่ (ยกเว้นอักขระตัวแรกของสตริง) และแทนที่ช่องว่างและขีดกลาง
s('TestUCase')->ขีดล่าง(); // 'test_u_case'
ส่งกลับเวอร์ชัน UpperCamelCase ของสตริงที่ให้มา โดยจะตัดแต่งช่องว่างโดยรอบ เปลี่ยนตัวอักษรตามตัวเลข ช่องว่าง ขีดกลาง และขีดล่างให้เป็นตัวพิมพ์ใหญ่ และลบช่องว่าง ขีดกลาง และขีดล่าง
s('Upper Camel-Case')->upperCamelize(); // 'UpperCamelCase'
แปลงอักขระตัวแรกของสตริงที่ให้มาเป็นตัวพิมพ์ใหญ่
s('σ foo')->upperCaseFirst(); // 'Σ ฟู'
ต่อไปนี้เป็นรายการไลบรารีที่ขยาย Stringy:
SliceableStringy: ชิ้นสตริงที่มีลักษณะคล้าย Python ใน PHP
SubStringy: วิธีการสตริงย่อยขั้นสูง
จากไดเร็กทอรีโปรเจ็กต์ การทดสอบสามารถรันได้โดยใช้ phpunit
เผยแพร่ภายใต้ใบอนุญาต MIT - ดู LICENSE.txt
สำหรับรายละเอียด