字串
簡介
Laravel 包含各種用於操作字串值的函式。這些函式中有許多是框架本身使用的;但是,如果您覺得方便,可以自由地在自己的應用程式中使用它們。
可用方法
字串
__ class_basename e preg_replace_array Str::after Str::afterLast Str::apa Str::ascii Str::before Str::beforeLast Str::between Str::betweenFirst Str::camel Str::charAt Str::chopStart Str::chopEnd Str::contains Str::containsAll Str::doesntContain Str::deduplicate Str::endsWith Str::excerpt Str::finish Str::headline Str::inlineMarkdown Str::is Str::isAscii Str::isJson Str::isUlid Str::isUrl Str::isUuid Str::kebab Str::lcfirst Str::length Str::limit Str::lower Str::markdown Str::mask Str::orderedUuid Str::padBoth Str::padLeft Str::padRight Str::password Str::plural Str::pluralStudly Str::position Str::random Str::remove Str::repeat Str::replace Str::replaceArray Str::replaceFirst Str::replaceLast Str::replaceMatches Str::replaceStart Str::replaceEnd Str::reverse Str::singular Str::slug Str::snake Str::squish Str::start Str::startsWith Str::studly Str::substr Str::substrCount Str::substrReplace Str::swap Str::take Str::title Str::toBase64 Str::transliterate Str::trim Str::ltrim Str::rtrim Str::ucfirst Str::ucsplit Str::upper Str::ulid Str::unwrap Str::uuid Str::wordCount Str::wordWrap Str::words Str::wrap str trans trans_choice
流暢字串
after afterLast apa append ascii basename before beforeLast between betweenFirst camel charAt classBasename chopStart chopEnd contains containsAll deduplicate dirname endsWith exactly excerpt explode finish headline inlineMarkdown is isAscii isEmpty isNotEmpty isJson isUlid isUrl isUuid kebab lcfirst length limit lower markdown mask match matchAll isMatch newLine padBoth padLeft padRight pipe plural position prepend remove repeat replace replaceArray replaceFirst replaceLast replaceMatches replaceStart replaceEnd scan singular slug snake split squish start startsWith stripTags studly substr substrReplace swap take tap test title toBase64 toHtmlString transliterate trim ltrim rtrim ucfirst ucsplit unwrap upper when whenContains whenContainsAll whenEmpty whenNotEmpty whenStartsWith whenEndsWith whenExactly whenNotExactly whenIs whenIsAscii whenIsUlid whenIsUuid whenTest wordCount words wrap
字串
__()
__
函式使用您的語言檔案翻譯給定的翻譯字串或翻譯鍵
1echo __('Welcome to our application');2 3echo __('messages.welcome');
如果指定的翻譯字串或鍵不存在,__
函式將傳回給定的值。因此,以上述範例來說,如果翻譯鍵不存在,__
函式將傳回 messages.welcome
。
class_basename()
class_basename
函式傳回給定類別的類別名稱,並移除類別的命名空間
1$class = class_basename('Foo\Bar\Baz');2 3// Baz
e()
e
函式執行 PHP 的 htmlspecialchars
函式,預設情況下 double_encode
選項設定為 true
1echo e('<html>foo</html>');2 3// <html>foo</html>
preg_replace_array()
preg_replace_array
函式使用陣列依序替換字串中給定的模式
1$string = 'The event will take place between :start and :end';2 3$replaced = preg_replace_array('/:[a-z_]+/', ['8:30', '9:00'], $string);4 5// The event will take place between 8:30 and 9:00
Str::after()
Str::after
方法傳回字串中給定值之後的所有內容。如果字串中不存在該值,則會傳回整個字串
1use Illuminate\Support\Str;2 3$slice = Str::after('This is my name', 'This is');4 5// ' my name'
Str::afterLast()
Str::afterLast
方法傳回字串中給定值最後一次出現之後的所有內容。如果字串中不存在該值,則會傳回整個字串
1use Illuminate\Support\Str;2 3$slice = Str::afterLast('App\Http\Controllers\Controller', '\\');4 5// 'Controller'
Str::apa()
Str::apa
方法依照 APA 指南將給定的字串轉換為標題大小寫
1use Illuminate\Support\Str;2 3$title = Str::apa('Creating A Project');4 5// 'Creating a Project'
Str::ascii()
Str::ascii
方法會嘗試將字串音譯為 ASCII 值
1use Illuminate\Support\Str;2 3$slice = Str::ascii('û');4 5// 'u'
Str::before()
Str::before
方法傳回字串中給定值之前的所有內容
1use Illuminate\Support\Str;2 3$slice = Str::before('This is my name', 'my name');4 5// 'This is '
Str::beforeLast()
Str::beforeLast
方法傳回字串中給定值最後一次出現之前的所有內容
1use Illuminate\Support\Str;2 3$slice = Str::beforeLast('This is my name', 'is');4 5// 'This '
Str::between()
Str::between
方法傳回字串中兩個值之間的部分
1use Illuminate\Support\Str;2 3$slice = Str::between('This is my name', 'This', 'name');4 5// ' is my '
Str::betweenFirst()
Str::betweenFirst
方法傳回字串中兩個值之間最小可能的部分
1use Illuminate\Support\Str;2 3$slice = Str::betweenFirst('[a] bc [d]', '[', ']');4 5// 'a'
Str::camel()
Str::camel
方法將給定的字串轉換為 camelCase
1use Illuminate\Support\Str;2 3$converted = Str::camel('foo_bar');4 5// 'fooBar'
Str::charAt()
Str::charAt
方法傳回指定索引位置的字元。如果索引超出範圍,則傳回 false
1use Illuminate\Support\Str;2 3$character = Str::charAt('This is my name.', 6);4 5// 's'
Str::chopStart()
Str::chopStart
方法僅在給定值出現在字串開頭時,移除第一次出現的值
1use Illuminate\Support\Str;2 3$url = Str::chopStart('https://laravel.dev.org.tw', 'https://');4 5// 'laravel.com'
您也可以傳遞陣列作為第二個引數。如果字串以陣列中的任何值開頭,則該值將會從字串中移除
1use Illuminate\Support\Str;2 3$url = Str::chopStart('https://laravel.dev.org.tw', ['https://', 'http://']);4 5// 'laravel.com'
Str::chopEnd()
Str::chopEnd
方法僅在給定值出現在字串結尾時,移除最後一次出現的值
1use Illuminate\Support\Str;2 3$url = Str::chopEnd('app/Models/Photograph.php', '.php');4 5// 'app/Models/Photograph'
您也可以傳遞陣列作為第二個引數。如果字串以陣列中的任何值結尾,則該值將會從字串中移除
1use Illuminate\Support\Str;2 3$url = Str::chopEnd('laravel.com/index.php', ['/index.html', '/index.php']);4 5// 'laravel.com'
Str::contains()
Str::contains
方法判斷給定的字串是否包含給定的值。預設情況下,此方法區分大小寫
1use Illuminate\Support\Str;2 3$contains = Str::contains('This is my name', 'my');4 5// true
您也可以傳遞值陣列,以判斷給定的字串是否包含陣列中的任何值
1use Illuminate\Support\Str;2 3$contains = Str::contains('This is my name', ['my', 'foo']);4 5// true
您可以將 ignoreCase
引數設定為 true
來停用區分大小寫
1use Illuminate\Support\Str;2 3$contains = Str::contains('This is my name', 'MY', ignoreCase: true);4 5// true
Str::containsAll()
Str::containsAll
方法判斷給定的字串是否包含給定陣列中的所有值
1use Illuminate\Support\Str;2 3$containsAll = Str::containsAll('This is my name', ['my', 'name']);4 5// true
您可以將 ignoreCase
引數設定為 true
來停用區分大小寫
1use Illuminate\Support\Str;2 3$containsAll = Str::containsAll('This is my name', ['MY', 'NAME'], ignoreCase: true);4 5// true
Str::doesntContain()
Str::doesntContain
方法判斷給定的字串是否*不*包含給定的值。預設情況下,此方法區分大小寫
1use Illuminate\Support\Str;2 3$doesntContain = Str::doesntContain('This is name', 'my');4 5// true
您也可以傳遞值陣列,以判斷給定的字串是否*不*包含陣列中的任何值
1use Illuminate\Support\Str;2 3$doesntContain = Str::doesntContain('This is name', ['my', 'foo']);4 5// true
您可以將 ignoreCase
引數設定為 true
來停用區分大小寫
1use Illuminate\Support\Str;2 3$doesntContain = Str::doesntContain('This is name', 'MY', ignoreCase: true);4 5// true
Str::deduplicate()
Str::deduplicate
方法將給定字串中連續出現的字元替換為該字元的單個實例。預設情況下,此方法會去重複空格
1use Illuminate\Support\Str;2 3$result = Str::deduplicate('The Laravel Framework');4 5// The Laravel Framework
您可以指定不同的字元來去重複,方法是將其作為第二個引數傳遞給該方法
1use Illuminate\Support\Str;2 3$result = Str::deduplicate('The---Laravel---Framework', '-');4 5// The-Laravel-Framework
Str::endsWith()
Str::endsWith
方法判斷給定的字串是否以給定的值結尾
1use Illuminate\Support\Str;2 3$result = Str::endsWith('This is my name', 'name');4 5// true
您也可以傳遞值陣列,以判斷給定的字串是否以陣列中的任何值結尾
1use Illuminate\Support\Str;2 3$result = Str::endsWith('This is my name', ['name', 'foo']);4 5// true6 7$result = Str::endsWith('This is my name', ['this', 'foo']);8 9// false
Str::excerpt()
Str::excerpt
方法從給定的字串中擷取與該字串中片語首次出現的實例相符的摘錄
1use Illuminate\Support\Str;2 3$excerpt = Str::excerpt('This is my name', 'my', [4 'radius' => 35]);6 7// '...is my na...'
radius
選項(預設值為 100
)可讓您定義應出現在截斷字串每一側的字元數。
此外,您可以使用 omission
選項來定義將前置和附加到截斷字串的字串
1use Illuminate\Support\Str;2 3$excerpt = Str::excerpt('This is my name', 'name', [4 'radius' => 3,5 'omission' => '(...) '6]);7 8// '(...) my name'
Str::finish()
Str::finish
方法將給定值的單個實例添加到字串,如果該字串尚未以該值結尾
1use Illuminate\Support\Str;2 3$adjusted = Str::finish('this/string', '/');4 5// this/string/6 7$adjusted = Str::finish('this/string/', '/');8 9// this/string/
Str::headline()
Str::headline
方法會將以大小寫、連字符或底線分隔的字串轉換為以空格分隔的字串,且每個單字的首字母大寫
1use Illuminate\Support\Str;2 3$headline = Str::headline('steve_jobs');4 5// Steve Jobs6 7$headline = Str::headline('EmailNotificationSent');8 9// Email Notification Sent
Str::inlineMarkdown()
Str::inlineMarkdown
方法使用 CommonMark 將 GitHub 風格的 Markdown 轉換為行內 HTML。但是,與 markdown 方法不同,它不會將所有產生的 HTML 包裹在區塊級元素中
1use Illuminate\Support\Str;2 3$html = Str::inlineMarkdown('**Laravel**');4 5// <strong>Laravel</strong>
Markdown 安全性
預設情況下,Markdown 支援原始 HTML,當與原始使用者輸入一起使用時,這會暴露跨網站指令碼 (XSS) 漏洞。根據 CommonMark 安全性文件,您可以使用 html_input
選項來逸出或剝離原始 HTML,以及 allow_unsafe_links
選項來指定是否允許不安全的連結。如果您需要允許一些原始 HTML,您應該將編譯後的 Markdown 透過 HTML Purifier 傳遞
1use Illuminate\Support\Str;2 3Str::inlineMarkdown('Inject: <script>alert("Hello XSS!");</script>', [4 'html_input' => 'strip',5 'allow_unsafe_links' => false,6]);7 8// Inject: alert("Hello XSS!");
Str::is()
Str::is
方法判斷給定的字串是否與給定的模式相符。星號可以用作萬用字元值
1use Illuminate\Support\Str;2 3$matches = Str::is('foo*', 'foobar');4 5// true6 7$matches = Str::is('baz*', 'foobar');8 9// false
您可以將 ignoreCase
引數設定為 true
來停用區分大小寫
1use Illuminate\Support\Str;2 3$matches = Str::is('*.jpg', 'photo.JPG', ignoreCase: true);4 5// true
Str::isAscii()
Str::isAscii
方法判斷給定的字串是否為 7 位元 ASCII
1use Illuminate\Support\Str;2 3$isAscii = Str::isAscii('Taylor');4 5// true6 7$isAscii = Str::isAscii('ü');8 9// false
Str::isJson()
Str::isJson
方法判斷給定的字串是否為有效的 JSON
1use Illuminate\Support\Str; 2 3$result = Str::isJson('[1,2,3]'); 4 5// true 6 7$result = Str::isJson('{"first": "John", "last": "Doe"}'); 8 9// true10 11$result = Str::isJson('{first: "John", last: "Doe"}');12 13// false
Str::isUrl()
Str::isUrl
方法判斷給定的字串是否為有效的 URL
1use Illuminate\Support\Str;2 3$isUrl = Str::isUrl('http://example.com');4 5// true6 7$isUrl = Str::isUrl('laravel');8 9// false
isUrl
方法將廣泛的協定視為有效。但是,您可以透過將應視為有效的協定提供給 isUrl
方法來指定它們
1$isUrl = Str::isUrl('http://example.com', ['http', 'https']);
Str::isUlid()
Str::isUlid
方法判斷給定的字串是否為有效的 ULID
1use Illuminate\Support\Str;2 3$isUlid = Str::isUlid('01gd6r360bp37zj17nxb55yv40');4 5// true6 7$isUlid = Str::isUlid('laravel');8 9// false
Str::isUuid()
Str::isUuid
方法判斷給定的字串是否為有效的 UUID
1use Illuminate\Support\Str;2 3$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');4 5// true6 7$isUuid = Str::isUuid('laravel');8 9// false
Str::kebab()
Str::kebab
方法將給定的字串轉換為 kebab-case
1use Illuminate\Support\Str;2 3$converted = Str::kebab('fooBar');4 5// foo-bar
Str::lcfirst()
Str::lcfirst
方法傳回給定的字串,並將第一個字元轉換為小寫
1use Illuminate\Support\Str;2 3$string = Str::lcfirst('Foo Bar');4 5// foo Bar
Str::length()
Str::length
方法傳回給定字串的長度
1use Illuminate\Support\Str;2 3$length = Str::length('Laravel');4 5// 7
Str::limit()
Str::limit
方法將給定的字串截斷為指定的長度
1use Illuminate\Support\Str;2 3$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20);4 5// The quick brown fox...
您可以將第三個引數傳遞給該方法,以變更將附加到截斷字串結尾的字串
1$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20, ' (...)');2 3// The quick brown fox (...)
如果您希望在截斷字串時保留完整的單字,可以使用 preserveWords
引數。當此引數為 true
時,字串將截斷到最接近的完整單字邊界
1$truncated = Str::limit('The quick brown fox', 12, preserveWords: true);2 3// The quick...
Str::lower()
Str::lower
方法將給定的字串轉換為小寫
1use Illuminate\Support\Str;2 3$converted = Str::lower('LARAVEL');4 5// laravel
Str::markdown()
Str::markdown
方法使用 CommonMark 將 GitHub 風格的 Markdown 轉換為 HTML
1use Illuminate\Support\Str; 2 3$html = Str::markdown('# Laravel'); 4 5// <h1>Laravel</h1> 6 7$html = Str::markdown('# Taylor <b>Otwell</b>', [ 8 'html_input' => 'strip', 9]);10 11// <h1>Taylor Otwell</h1>
Markdown 安全性
預設情況下,Markdown 支援原始 HTML,當與原始使用者輸入一起使用時,這會暴露跨網站指令碼 (XSS) 漏洞。根據 CommonMark 安全性文件,您可以使用 html_input
選項來逸出或剝離原始 HTML,以及 allow_unsafe_links
選項來指定是否允許不安全的連結。如果您需要允許一些原始 HTML,您應該將編譯後的 Markdown 透過 HTML Purifier 傳遞
1use Illuminate\Support\Str;2 3Str::markdown('Inject: <script>alert("Hello XSS!");</script>', [4 'html_input' => 'strip',5 'allow_unsafe_links' => false,6]);7 8// <p>Inject: alert("Hello XSS!");</p>
Str::mask()
Str::mask
方法使用重複的字元遮罩字串的一部分,可用於模糊處理字串的區段,例如電子郵件地址和電話號碼
1use Illuminate\Support\Str;2 4 5// tay***************
如果需要,您可以提供負數作為 mask
方法的第三個引數,這將指示該方法從字串結尾給定的距離處開始遮罩
2 3// tay***@example.com
Str::orderedUuid()
Str::orderedUuid
方法產生一個「時間戳記優先」的 UUID,可以有效地儲存在索引資料庫欄位中。使用此方法產生的每個 UUID 都將在先前使用該方法產生的 UUID 之後排序
1use Illuminate\Support\Str;2 3return (string) Str::orderedUuid();
Str::padBoth()
Str::padBoth
方法包裝了 PHP 的 str_pad
函式,使用另一個字串填充字串的兩側,直到最終字串達到所需的長度
1use Illuminate\Support\Str;2 3$padded = Str::padBoth('James', 10, '_');4 5// '__James___'6 7$padded = Str::padBoth('James', 10);8 9// ' James '
Str::padLeft()
Str::padLeft
方法包裝了 PHP 的 str_pad
函式,使用另一個字串填充字串的左側,直到最終字串達到所需的長度
1use Illuminate\Support\Str;2 3$padded = Str::padLeft('James', 10, '-=');4 5// '-=-=-James'6 7$padded = Str::padLeft('James', 10);8 9// ' James'
Str::padRight()
Str::padRight
方法包裝了 PHP 的 str_pad
函式,使用另一個字串填充字串的右側,直到最終字串達到所需的長度
1use Illuminate\Support\Str;2 3$padded = Str::padRight('James', 10, '-');4 5// 'James-----'6 7$padded = Str::padRight('James', 10);8 9// 'James '
Str::password()
Str::password
方法可用於產生給定長度的安全隨機密碼。密碼將由字母、數字、符號和空格的組合組成。預設情況下,密碼長度為 32 個字元
1use Illuminate\Support\Str;2 3$password = Str::password();4 5// 'EbJo2vE-AS:U,$%_gkrV4n,q~1xy/-_4'6 7$password = Str::password(12);8 9// 'qwuar>#V|i]N'
Str::plural()
Str::plural
方法將單數單字字串轉換為其複數形式。此函式支援Laravel 複數化工具支援的任何語言
1use Illuminate\Support\Str;2 3$plural = Str::plural('car');4 5// cars6 7$plural = Str::plural('child');8 9// children
您可以將整數作為第二個引數提供給函式,以檢索字串的單數或複數形式
1use Illuminate\Support\Str;2 3$plural = Str::plural('child', 2);4 5// children6 7$singular = Str::plural('child', 1);8 9// child
Str::pluralStudly()
Str::pluralStudly
方法將以 Studly Caps 大小寫格式化的單數單字字串轉換為其複數形式。此函式支援Laravel 複數化工具支援的任何語言
1use Illuminate\Support\Str;2 3$plural = Str::pluralStudly('VerifiedHuman');4 5// VerifiedHumans6 7$plural = Str::pluralStudly('UserFeedback');8 9// UserFeedback
您可以將整數作為第二個引數提供給函式,以檢索字串的單數或複數形式
1use Illuminate\Support\Str;2 3$plural = Str::pluralStudly('VerifiedHuman', 2);4 5// VerifiedHumans6 7$singular = Str::pluralStudly('VerifiedHuman', 1);8 9// VerifiedHuman
Str::position()
Str::position
方法傳回子字串在字串中首次出現的位置。如果給定的字串中不存在子字串,則傳回 false
1use Illuminate\Support\Str;2 3$position = Str::position('Hello, World!', 'Hello');4 5// 06 7$position = Str::position('Hello, World!', 'W');8 9// 7
Str::random()
Str::random
方法產生指定長度的隨機字串。此函式使用 PHP 的 random_bytes
函式
1use Illuminate\Support\Str;2 3$random = Str::random(40);
在測試期間,模擬 Str::random
方法傳回的值可能很有用。若要完成此操作,您可以使用 createRandomStringsUsing
方法
1Str::createRandomStringsUsing(function () {2 return 'fake-random-string';3});
若要指示 random
方法返回正常產生隨機字串,您可以調用 createRandomStringsNormally
方法
1Str::createRandomStringsNormally();
Str::remove()
Str::remove
方法從字串中移除給定的值或值陣列
1use Illuminate\Support\Str;2 3$string = 'Peter Piper picked a peck of pickled peppers.';4 5$removed = Str::remove('e', $string);6 7// Ptr Pipr pickd a pck of pickld ppprs.
您也可以將 false
作為第三個引數傳遞給 remove
方法,以在移除字串時忽略大小寫。
Str::repeat()
Str::repeat
方法重複給定的字串
1use Illuminate\Support\Str;2 3$string = 'a';4 5$repeat = Str::repeat($string, 5);6 7// aaaaa
Str::replace()
Str::replace
方法替換字串中的給定字串
1use Illuminate\Support\Str;2 3$string = 'Laravel 10.x';4 5$replaced = Str::replace('10.x', '11.x', $string);6 7// Laravel 11.x
replace
方法也接受 caseSensitive
引數。預設情況下,replace
方法區分大小寫
1Str::replace('Framework', 'Laravel', caseSensitive: false);
Str::replaceArray()
Str::replaceArray
方法使用陣列依序替換字串中的給定值
1use Illuminate\Support\Str;2 3$string = 'The event will take place between ? and ?';4 5$replaced = Str::replaceArray('?', ['8:30', '9:00'], $string);6 7// The event will take place between 8:30 and 9:00
Str::replaceFirst()
Str::replaceFirst
方法替換字串中給定值首次出現的實例
1use Illuminate\Support\Str;2 3$replaced = Str::replaceFirst('the', 'a', 'the quick brown fox jumps over the lazy dog');4 5// a quick brown fox jumps over the lazy dog
Str::replaceLast()
Str::replaceLast
方法替換字串中給定值最後一次出現的實例
1use Illuminate\Support\Str;2 3$replaced = Str::replaceLast('the', 'a', 'the quick brown fox jumps over the lazy dog');4 5// the quick brown fox jumps over a lazy dog
Str::replaceMatches()
Str::replaceMatches
方法將字串中所有與模式相符的部分替換為給定的替換字串
1use Illuminate\Support\Str;2 3$replaced = Str::replaceMatches(4 pattern: '/[^A-Za-z0-9]++/',5 replace: '',6 subject: '(+1) 501-555-1000'7)8 9// '15015551000'
replaceMatches
方法也接受一個閉包,該閉包將針對字串中每個與給定模式相符的部分調用,讓您可以在閉包內執行替換邏輯並傳回替換值
1use Illuminate\Support\Str;2 3$replaced = Str::replaceMatches('/\d/', function (array $matches) {4 return '['.$matches[0].']';5}, '123');6 7// '[1][2][3]'
Str::replaceStart()
Str::replaceStart
方法僅在給定值出現在字串開頭時,替換第一次出現的值
1use Illuminate\Support\Str;2 3$replaced = Str::replaceStart('Hello', 'Laravel', 'Hello World');4 5// Laravel World6 7$replaced = Str::replaceStart('World', 'Laravel', 'Hello World');8 9// Hello World
Str::replaceEnd()
Str::replaceEnd
方法僅在給定值出現在字串結尾時,替換最後一次出現的值
1use Illuminate\Support\Str;2 3$replaced = Str::replaceEnd('World', 'Laravel', 'Hello World');4 5// Hello Laravel6 7$replaced = Str::replaceEnd('Hello', 'Laravel', 'Hello World');8 9// Hello World
Str::reverse()
Str::reverse
方法反轉給定的字串
1use Illuminate\Support\Str;2 3$reversed = Str::reverse('Hello World');4 5// dlroW olleH
Str::singular()
Str::singular
方法將字串轉換為其單數形式。此函式支援Laravel 複數化工具支援的任何語言
1use Illuminate\Support\Str;2 3$singular = Str::singular('cars');4 5// car6 7$singular = Str::singular('children');8 9// child
Str::slug()
Str::slug
方法從給定的字串產生 URL 友善的「slug」
1use Illuminate\Support\Str;2 3$slug = Str::slug('Laravel 5 Framework', '-');4 5// laravel-5-framework
Str::snake()
Str::snake
方法將給定的字串轉換為 snake_case
1use Illuminate\Support\Str;2 3$converted = Str::snake('fooBar');4 5// foo_bar6 7$converted = Str::snake('fooBar', '-');8 9// foo-bar
Str::squish()
Str::squish
方法移除字串中所有多餘的空白字元,包括單字之間多餘的空白字元
1use Illuminate\Support\Str;2 3$string = Str::squish(' laravel framework ');4 5// laravel framework
Str::start()
Str::start
方法將給定值的單個實例添加到字串,如果該字串尚未以該值開頭
1use Illuminate\Support\Str;2 3$adjusted = Str::start('this/string', '/');4 5// /this/string6 7$adjusted = Str::start('/this/string', '/');8 9// /this/string
Str::startsWith()
Str::startsWith
方法判斷給定的字串是否以給定的值開頭
1use Illuminate\Support\Str;2 3$result = Str::startsWith('This is my name', 'This');4 5// true
如果傳遞了可能值的陣列,則當字串以任何給定值開頭時,startsWith
方法將傳回 true
1$result = Str::startsWith('This is my name', ['This', 'That', 'There']);2 3// true
Str::studly()
Str::studly
方法將給定的字串轉換為 StudlyCase
1use Illuminate\Support\Str;2 3$converted = Str::studly('foo_bar');4 5// FooBar
Str::substr()
Str::substr
方法傳回由 start 和 length 參數指定的字串部分
1use Illuminate\Support\Str;2 3$converted = Str::substr('The Laravel Framework', 4, 7);4 5// Laravel
Str::substrCount()
Str::substrCount
方法傳回給定字串中給定值出現的次數
1use Illuminate\Support\Str;2 3$count = Str::substrCount('If you like ice cream, you will like snow cones.', 'like');4 5// 2
Str::substrReplace()
Str::substrReplace
方法替換字串一部分中的文字,從第三個引數指定的位置開始,並替換第四個引數指定的字元數。將 0
傳遞給該方法的第四個引數將在指定位置插入字串,而不會替換字串中任何現有的字元
1use Illuminate\Support\Str;2 3$result = Str::substrReplace('1300', ':', 2);4// 13:5 6$result = Str::substrReplace('1300', ':', 2, 0);7// 13:00
Str::swap()
Str::swap
方法使用 PHP 的 strtr
函式替換給定字串中的多個值
1use Illuminate\Support\Str;2 3$string = Str::swap([4 'Tacos' => 'Burritos',5 'great' => 'fantastic',6], 'Tacos are great!');7 8// Burritos are fantastic!
Str::take()
Str::take
方法從字串的開頭傳回指定數量的字元
1use Illuminate\Support\Str;2 3$taken = Str::take('Build something amazing!', 5);4 5// Build
Str::title()
Str::title
方法將給定的字串轉換為 Title Case
1use Illuminate\Support\Str;2 3$converted = Str::title('a nice title uses the correct case');4 5// A Nice Title Uses The Correct Case
Str::toBase64()
Str::toBase64
方法將給定的字串轉換為 Base64
1use Illuminate\Support\Str;2 3$base64 = Str::toBase64('Laravel');4 5// TGFyYXZlbA==
Str::transliterate()
Str::transliterate
方法會嘗試將給定的字串轉換為最接近的 ASCII 表示形式
1use Illuminate\Support\Str;2 3$email = Str::transliterate('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ');4
Str::trim()
Str::trim
方法從給定字串的開頭和結尾剝離空白字元(或其他字元)。與 PHP 原生的 trim
函式不同,Str::trim
方法還會移除 Unicode 空白字元
1use Illuminate\Support\Str;2 3$string = Str::trim(' foo bar ');4 5// 'foo bar'
Str::ltrim()
Str::ltrim
方法從給定字串的開頭剝離空白字元(或其他字元)。與 PHP 原生的 ltrim
函式不同,Str::ltrim
方法還會移除 Unicode 空白字元
1use Illuminate\Support\Str;2 3$string = Str::ltrim(' foo bar ');4 5// 'foo bar '
Str::rtrim()
Str::rtrim
方法從給定字串的結尾剝離空白字元(或其他字元)。與 PHP 原生的 rtrim
函式不同,Str::rtrim
方法還會移除 Unicode 空白字元
1use Illuminate\Support\Str;2 3$string = Str::rtrim(' foo bar ');4 5// ' foo bar'
Str::ucfirst()
Str::ucfirst
方法傳回給定的字串,並將第一個字元轉換為大寫
1use Illuminate\Support\Str;2 3$string = Str::ucfirst('foo bar');4 5// Foo bar
Str::ucsplit()
Str::ucsplit
方法依據大寫字元將給定的字串分割成陣列
1use Illuminate\Support\Str;2 3$segments = Str::ucsplit('FooBar');4 5// [0 => 'Foo', 1 => 'Bar']
Str::upper()
Str::upper
方法將給定的字串轉換為大寫
1use Illuminate\Support\Str;2 3$string = Str::upper('laravel');4 5// LARAVEL
Str::ulid()
Str::ulid
方法產生一個 ULID,這是一個精簡的、時間順序的唯一識別碼
1use Illuminate\Support\Str;2 3return (string) Str::ulid();4 5// 01gd6r360bp37zj17nxb55yv40
如果您想檢索代表給定 ULID 建立日期和時間的 Illuminate\Support\Carbon
日期實例,可以使用 Laravel Carbon 整合提供的 createFromId
方法
1use Illuminate\Support\Carbon;2use Illuminate\Support\Str;3 4$date = Carbon::createFromId((string) Str::ulid());
在測試期間,模擬 Str::ulid
方法傳回的值可能很有用。若要完成此操作,您可以使用 createUlidsUsing
方法
1use Symfony\Component\Uid\Ulid;2 3Str::createUlidsUsing(function () {4 return new Ulid('01HRDBNHHCKNW2AK4Z29SN82T9');5});
若要指示 ulid
方法返回正常產生 ULID,您可以調用 createUlidsNormally
方法
1Str::createUlidsNormally();
Str::unwrap()
Str::unwrap
方法從給定字串的開頭和結尾移除指定的字串
1use Illuminate\Support\Str;2 3Str::unwrap('-Laravel-', '-');4 5// Laravel6 7Str::unwrap('{framework: "Laravel"}', '{', '}');8 9// framework: "Laravel"
Str::uuid()
Str::uuid
方法產生一個 UUID(版本 4)
1use Illuminate\Support\Str;2 3return (string) Str::uuid();
在測試期間,模擬 Str::uuid
方法傳回的值可能很有用。若要完成此操作,您可以使用 createUuidsUsing
方法
1use Ramsey\Uuid\Uuid;2 3Str::createUuidsUsing(function () {4 return Uuid::fromString('eadbfeac-5258-45c2-bab7-ccb9b5ef74f9');5});
若要指示 uuid
方法返回正常產生 UUID,您可以調用 createUuidsNormally
方法
1Str::createUuidsNormally();
Str::wordCount()
Str::wordCount
方法傳回字串包含的單字數
1use Illuminate\Support\Str;2 3Str::wordCount('Hello, world!'); // 2
Str::wordWrap()
Str::wordWrap
方法將字串包裝到給定的字元數
1 2``````php 3use Illuminate\Support\Str; 4 5$text = "The quick brown fox jumped over the lazy dog." 6 7Str::wordWrap($text, characters: 20, break: "<br />\n"); 8 9/*10The quick brown fox<br />11jumped over the lazy<br />12dog.13*/
Str::words()
Str::words
方法限制字串中的單字數。額外的字串可以透過其第三個引數傳遞給此方法,以指定應附加到截斷字串結尾的字串
1 2``````php3use Illuminate\Support\Str;4 5return Str::words('Perfectly balanced, as all things should be.', 3, ' >>>');6 7// Perfectly balanced, as >>>
Str::wrap()
Str::wrap
方法使用額外的字串或一對字串包裝給定的字串
1 2``````php 3use Illuminate\Support\Str; 4 5Str::wrap('Laravel', '"'); 6 7// "Laravel" 8 9Str::wrap('is', before: 'This ', after: ' Laravel!');10 11// This is Laravel!
str()
str
函式傳回給定字串的新的 Illuminate\Support\Stringable
實例。此函式等效於 Str::of
方法
1 2``````php3$string = str('Taylor')->append(' Otwell');4 5// 'Taylor Otwell'
如果沒有為 str
函式提供任何引數,則該函式會傳回 Illuminate\Support\Str
的實例
1 2``````php3$snake = str()->snake('FooBar');4 5// 'foo_bar'
trans()
trans
函式使用您的語言檔案翻譯給定的翻譯鍵
1 2``````php3echo trans('messages.welcome');
如果指定的翻譯鍵不存在,trans
函數將會回傳給定的鍵。因此,以上述範例來說,如果翻譯鍵不存在,trans
函數將會回傳 messages.welcome
。
trans_choice()
trans_choice
函數會翻譯給定的翻譯鍵,並帶有詞形變化
1echo trans_choice('messages.notifications', $unreadCount);
如果指定的翻譯鍵不存在,trans_choice
函數將會回傳給定的鍵。因此,以上述範例來說,如果翻譯鍵不存在,trans_choice
函數將會回傳 messages.notifications
。
流暢字串
Fluent strings(流暢字串)為處理字串值提供更流暢、物件導向的介面,相較於傳統的字串操作,它允許您使用更易讀的語法將多個字串操作串鏈在一起。
after
after
方法會回傳字串中給定值之後的所有內容。如果該值在字串中不存在,則會回傳整個字串
1use Illuminate\Support\Str;2 3$slice = Str::of('This is my name')->after('This is');4 5// ' my name'
afterLast
afterLast
方法會回傳字串中給定值最後一次出現之後的所有內容。如果該值在字串中不存在,則會回傳整個字串
1use Illuminate\Support\Str;2 3$slice = Str::of('App\Http\Controllers\Controller')->afterLast('\\');4 5// 'Controller'
apa
apa
方法會依照 APA 指南,將給定的字串轉換為標題大小寫
1use Illuminate\Support\Str;2 3$converted = Str::of('a nice title uses the correct case')->apa();4 5// A Nice Title Uses the Correct Case
append
append
方法會將給定的值附加到字串的末尾
1use Illuminate\Support\Str;2 3$string = Str::of('Taylor')->append(' Otwell');4 5// 'Taylor Otwell'
ascii
ascii
方法會嘗試將字串音譯為 ASCII 值
1use Illuminate\Support\Str;2 3$string = Str::of('ü')->ascii();4 5// 'u'
basename
basename
方法會回傳給定字串的尾端名稱組件
1use Illuminate\Support\Str;2 3$string = Str::of('/foo/bar/baz')->basename();4 5// 'baz'
如果需要,您可以提供一個「副檔名」,該副檔名將會從尾端組件中移除
1use Illuminate\Support\Str;2 3$string = Str::of('/foo/bar/baz.jpg')->basename('.jpg');4 5// 'baz'
before
before
方法會回傳字串中給定值之前的所有內容
1use Illuminate\Support\Str;2 3$slice = Str::of('This is my name')->before('my name');4 5// 'This is '
beforeLast
beforeLast
方法會回傳字串中給定值最後一次出現之前的所有內容
1use Illuminate\Support\Str;2 3$slice = Str::of('This is my name')->beforeLast('is');4 5// 'This '
between
between
方法會回傳字串中兩個值之間的部分
1use Illuminate\Support\Str;2 3$converted = Str::of('This is my name')->between('This', 'name');4 5// ' is my '
betweenFirst
betweenFirst
方法會回傳字串中兩個值之間最小可能的部分
1use Illuminate\Support\Str;2 3$converted = Str::of('[a] bc [d]')->betweenFirst('[', ']');4 5// 'a'
camel
camel
方法會將給定的字串轉換為 camelCase
1use Illuminate\Support\Str;2 3$converted = Str::of('foo_bar')->camel();4 5// 'fooBar'
charAt
charAt
方法會回傳指定索引位置的字元。如果索引超出範圍,則會回傳 false
1use Illuminate\Support\Str;2 3$character = Str::of('This is my name.')->charAt(6);4 5// 's'
classBasename
classBasename
方法會回傳給定類別的類別名稱,並移除類別的命名空間
1use Illuminate\Support\Str;2 3$class = Str::of('Foo\Bar\Baz')->classBasename();4 5// 'Baz'
chopStart
chopStart
方法僅在給定值出現在字串開頭時,才會移除第一次出現的該值
1use Illuminate\Support\Str;2 3$url = Str::of('https://laravel.dev.org.tw')->chopStart('https://');4 5// 'laravel.com'
您也可以傳遞一個陣列。如果字串以陣列中的任何值開頭,則該值將會從字串中移除
1use Illuminate\Support\Str;2 3$url = Str::of('https://laravel.dev.org.tw')->chopStart(['https://', 'http://']);4 5// 'laravel.com'
chopEnd
chopEnd
方法僅在給定值出現在字串結尾時,才會移除最後一次出現的該值
1use Illuminate\Support\Str;2 3$url = Str::of('https://laravel.dev.org.tw')->chopEnd('.com');4 5// 'https://laravel'
您也可以傳遞一個陣列。如果字串以陣列中的任何值結尾,則該值將會從字串中移除
1use Illuminate\Support\Str;2 3$url = Str::of('https://laravel.dev.org.tw')->chopEnd(['.com', '.io']);4 5// 'http://laravel'
contains
contains
方法會判斷給定的字串是否包含給定的值。預設情況下,此方法區分大小寫
1use Illuminate\Support\Str;2 3$contains = Str::of('This is my name')->contains('my');4 5// true
您也可以傳遞值陣列,以判斷給定的字串是否包含陣列中的任何值
1use Illuminate\Support\Str;2 3$contains = Str::of('This is my name')->contains(['my', 'foo']);4 5// true
您可以將 ignoreCase
參數設定為 true
來停用區分大小寫
1use Illuminate\Support\Str;2 3$contains = Str::of('This is my name')->contains('MY', ignoreCase: true);4 5// true
containsAll
containsAll
方法會判斷給定的字串是否包含給定陣列中的所有值
1use Illuminate\Support\Str;2 3$containsAll = Str::of('This is my name')->containsAll(['my', 'name']);4 5// true
您可以將 ignoreCase
參數設定為 true
來停用區分大小寫
1use Illuminate\Support\Str;2 3$containsAll = Str::of('This is my name')->containsAll(['MY', 'NAME'], ignoreCase: true);4 5// true
deduplicate
deduplicate
方法會將字串中連續出現的字元替換為該字元的單個實例。預設情況下,此方法會移除重複的空格
1use Illuminate\Support\Str;2 3$result = Str::of('The Laravel Framework')->deduplicate();4 5// The Laravel Framework
您可以指定不同的字元來去重複,方法是將其作為第二個引數傳遞給該方法
1use Illuminate\Support\Str;2 3$result = Str::of('The---Laravel---Framework')->deduplicate('-');4 5// The-Laravel-Framework
dirname
dirname
方法會回傳給定字串的父目錄部分
1use Illuminate\Support\Str;2 3$string = Str::of('/foo/bar/baz')->dirname();4 5// '/foo/bar'
如有必要,您可以指定要從字串中修剪的目錄層級數量
1use Illuminate\Support\Str;2 3$string = Str::of('/foo/bar/baz')->dirname(2);4 5// '/foo'
endsWith
endsWith
方法會判斷給定的字串是否以給定的值結尾
1use Illuminate\Support\Str;2 3$result = Str::of('This is my name')->endsWith('name');4 5// true
您也可以傳遞值陣列,以判斷給定的字串是否以陣列中的任何值結尾
1use Illuminate\Support\Str;2 3$result = Str::of('This is my name')->endsWith(['name', 'foo']);4 5// true6 7$result = Str::of('This is my name')->endsWith(['this', 'foo']);8 9// false
exactly
exactly
方法會判斷給定的字串是否與另一個字串完全匹配
1use Illuminate\Support\Str;2 3$result = Str::of('Laravel')->exactly('Laravel');4 5// true
excerpt
excerpt
方法會從字串中提取與該字串中短語首次出現位置相符的摘錄
1use Illuminate\Support\Str;2 3$excerpt = Str::of('This is my name')->excerpt('my', [4 'radius' => 35]);6 7// '...is my na...'
radius
選項(預設值為 100
)可讓您定義應出現在截斷字串每一側的字元數。
此外,您可以使用 omission
選項來變更將會前置和附加到截斷字串的字串
1use Illuminate\Support\Str;2 3$excerpt = Str::of('This is my name')->excerpt('name', [4 'radius' => 3,5 'omission' => '(...) '6]);7 8// '(...) my name'
explode
explode
方法會依據給定的分隔符號分割字串,並回傳一個包含分割字串每個區段的集合
1use Illuminate\Support\Str;2 3$collection = Str::of('foo bar baz')->explode(' ');4 5// collect(['foo', 'bar', 'baz'])
finish
finish
方法會在字串結尾尚未包含給定值的情況下,將給定值的單個實例添加到字串結尾
1use Illuminate\Support\Str;2 3$adjusted = Str::of('this/string')->finish('/');4 5// this/string/6 7$adjusted = Str::of('this/string/')->finish('/');8 9// this/string/
headline
headline
方法會將以大小寫、連字符或底線分隔的字串轉換為以空格分隔的字串,且每個單字的首字母大寫
1use Illuminate\Support\Str;2 3$headline = Str::of('taylor_otwell')->headline();4 5// Taylor Otwell6 7$headline = Str::of('EmailNotificationSent')->headline();8 9// Email Notification Sent
inlineMarkdown
inlineMarkdown
方法使用 CommonMark 將 GitHub Flavored Markdown 轉換為行內 HTML。但是,與 markdown
方法不同,它不會將所有產生的 HTML 包裹在區塊層級元素中
1use Illuminate\Support\Str;2 3$html = Str::of('**Laravel**')->inlineMarkdown();4 5// <strong>Laravel</strong>
Markdown 安全性
預設情況下,Markdown 支援原始 HTML,當與原始使用者輸入一起使用時,這會暴露跨網站指令碼 (XSS) 漏洞。根據 CommonMark 安全性文件,您可以使用 html_input
選項來逸出或剝離原始 HTML,以及 allow_unsafe_links
選項來指定是否允許不安全的連結。如果您需要允許一些原始 HTML,您應該將編譯後的 Markdown 透過 HTML Purifier 傳遞
1use Illuminate\Support\Str;2 3Str::of('Inject: <script>alert("Hello XSS!");</script>')->inlineMarkdown([4 'html_input' => 'strip',5 'allow_unsafe_links' => false,6]);7 8// Inject: alert("Hello XSS!");
is
is
方法會判斷給定的字串是否與給定的模式匹配。星號可以用作萬用字元值
1use Illuminate\Support\Str;2 3$matches = Str::of('foobar')->is('foo*');4 5// true6 7$matches = Str::of('foobar')->is('baz*');8 9// false
isAscii
isAscii
方法會判斷給定的字串是否為 ASCII 字串
1use Illuminate\Support\Str;2 3$result = Str::of('Taylor')->isAscii();4 5// true6 7$result = Str::of('ü')->isAscii();8 9// false
isEmpty
isEmpty
方法會判斷給定的字串是否為空字串
1use Illuminate\Support\Str;2 3$result = Str::of(' ')->trim()->isEmpty();4 5// true6 7$result = Str::of('Laravel')->trim()->isEmpty();8 9// false
isNotEmpty
isNotEmpty
方法會判斷給定的字串是否不為空字串
1use Illuminate\Support\Str;2 3$result = Str::of(' ')->trim()->isNotEmpty();4 5// false6 7$result = Str::of('Laravel')->trim()->isNotEmpty();8 9// true
isJson
isJson
方法會判斷給定的字串是否為有效的 JSON
1use Illuminate\Support\Str; 2 3$result = Str::of('[1,2,3]')->isJson(); 4 5// true 6 7$result = Str::of('{"first": "John", "last": "Doe"}')->isJson(); 8 9// true10 11$result = Str::of('{first: "John", last: "Doe"}')->isJson();12 13// false
isUlid
isUlid
方法會判斷給定的字串是否為 ULID
1use Illuminate\Support\Str;2 3$result = Str::of('01gd6r360bp37zj17nxb55yv40')->isUlid();4 5// true6 7$result = Str::of('Taylor')->isUlid();8 9// false
isUrl
isUrl
方法會判斷給定的字串是否為 URL
1use Illuminate\Support\Str;2 3$result = Str::of('http://example.com')->isUrl();4 5// true6 7$result = Str::of('Taylor')->isUrl();8 9// false
isUrl
方法將廣泛的協定視為有效。但是,您可以透過將應視為有效的協定提供給 isUrl
方法來指定它們
1$result = Str::of('http://example.com')->isUrl(['http', 'https']);
isUuid
isUuid
方法會判斷給定的字串是否為 UUID
1use Illuminate\Support\Str;2 3$result = Str::of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c')->isUuid();4 5// true6 7$result = Str::of('Taylor')->isUuid();8 9// false
kebab
kebab
方法會將給定的字串轉換為 kebab-case
1use Illuminate\Support\Str;2 3$converted = Str::of('fooBar')->kebab();4 5// foo-bar
lcfirst
lcfirst
方法會回傳給定字串,並將第一個字元轉換為小寫
1use Illuminate\Support\Str;2 3$string = Str::of('Foo Bar')->lcfirst();4 5// foo Bar
length
length
方法會回傳給定字串的長度
1use Illuminate\Support\Str;2 3$length = Str::of('Laravel')->length();4 5// 7
limit
limit
方法會將給定的字串截斷為指定的長度
1use Illuminate\Support\Str;2 3$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20);4 5// The quick brown fox...
您也可以傳遞第二個參數來變更將會附加到截斷字串結尾的字串
1$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20, ' (...)');2 3// The quick brown fox (...)
如果您希望在截斷字串時保留完整的單字,可以使用 preserveWords
引數。當此引數為 true
時,字串將截斷到最接近的完整單字邊界
1$truncated = Str::of('The quick brown fox')->limit(12, preserveWords: true);2 3// The quick...
lower
lower
方法會將給定的字串轉換為小寫
1use Illuminate\Support\Str;2 3$result = Str::of('LARAVEL')->lower();4 5// 'laravel'
markdown
markdown
方法會將 GitHub Flavored Markdown 轉換為 HTML
1use Illuminate\Support\Str; 2 3$html = Str::of('# Laravel')->markdown(); 4 5// <h1>Laravel</h1> 6 7$html = Str::of('# Taylor <b>Otwell</b>')->markdown([ 8 'html_input' => 'strip', 9]);10 11// <h1>Taylor Otwell</h1>
Markdown 安全性
預設情況下,Markdown 支援原始 HTML,當與原始使用者輸入一起使用時,這會暴露跨網站指令碼 (XSS) 漏洞。根據 CommonMark 安全性文件,您可以使用 html_input
選項來逸出或剝離原始 HTML,以及 allow_unsafe_links
選項來指定是否允許不安全的連結。如果您需要允許一些原始 HTML,您應該將編譯後的 Markdown 透過 HTML Purifier 傳遞
1use Illuminate\Support\Str;2 3Str::of('Inject: <script>alert("Hello XSS!");</script>')->markdown([4 'html_input' => 'strip',5 'allow_unsafe_links' => false,6]);7 8// <p>Inject: alert("Hello XSS!");</p>
mask
mask
方法會使用重複的字元遮罩字串的一部分,可用於混淆字串的區段,例如電子郵件地址和電話號碼
1use Illuminate\Support\Str;2 4 5// tay***************
如果需要,您可以將負數作為 mask
方法的第三個或第四個參數提供,這將指示該方法從字串結尾給定的距離開始遮罩
2 3// tay***@example.com4 6 7// tayl**********.com
match
match
方法會回傳字串中與給定正規表示式模式相符的部分
1use Illuminate\Support\Str;2 3$result = Str::of('foo bar')->match('/bar/');4 5// 'bar'6 7$result = Str::of('foo bar')->match('/foo (.*)/');8 9// 'bar'
matchAll
matchAll
方法會回傳一個集合,其中包含字串中與給定正規表示式模式相符的所有部分
1use Illuminate\Support\Str;2 3$result = Str::of('bar foo bar')->matchAll('/bar/');4 5// collect(['bar', 'bar'])
如果您在表達式中指定了匹配群組,Laravel 將會回傳第一個匹配群組的匹配項集合
1use Illuminate\Support\Str;2 3$result = Str::of('bar fun bar fly')->matchAll('/f(\w*)/');4 5// collect(['un', 'ly']);
如果找不到任何匹配項,則會回傳一個空集合。
isMatch
isMatch
方法會在字串與給定的正規表示式匹配時回傳 true
1use Illuminate\Support\Str;2 3$result = Str::of('foo bar')->isMatch('/foo (.*)/');4 5// true6 7$result = Str::of('laravel')->isMatch('/foo (.*)/');8 9// false
newLine
newLine
方法會在字串末尾附加一個「換行符號」
1use Illuminate\Support\Str;2 3$padded = Str::of('Laravel')->newLine()->append('Framework');4 5// 'Laravel6// Framework'
padBoth
padBoth
方法包裝了 PHP 的 str_pad
函數,使用另一個字串填充字串的兩側,直到最終字串達到所需的長度
1use Illuminate\Support\Str;2 3$padded = Str::of('James')->padBoth(10, '_');4 5// '__James___'6 7$padded = Str::of('James')->padBoth(10);8 9// ' James '
padLeft
padLeft
方法包裝了 PHP 的 str_pad
函數,使用另一個字串填充字串的左側,直到最終字串達到所需的長度
1use Illuminate\Support\Str;2 3$padded = Str::of('James')->padLeft(10, '-=');4 5// '-=-=-James'6 7$padded = Str::of('James')->padLeft(10);8 9// ' James'
padRight
padRight
方法包裝了 PHP 的 str_pad
函數,使用另一個字串填充字串的右側,直到最終字串達到所需的長度
1use Illuminate\Support\Str;2 3$padded = Str::of('James')->padRight(10, '-');4 5// 'James-----'6 7$padded = Str::of('James')->padRight(10);8 9// 'James '
pipe
pipe
方法允許您透過將字串的目前值傳遞給給定的可調用函數來轉換字串
1use Illuminate\Support\Str; 2use Illuminate\Support\Stringable; 3 4$hash = Str::of('Laravel')->pipe('md5')->prepend('Checksum: '); 5 6// 'Checksum: a5c95b86291ea299fcbe64458ed12702' 7 8$closure = Str::of('foo')->pipe(function (Stringable $str) { 9 return 'bar';10});11 12// 'bar'
plural
plural
方法會將單數單字字串轉換為複數形式。此函數支援 Laravel 的複數化工具支援的任何語言
1use Illuminate\Support\Str;2 3$plural = Str::of('car')->plural();4 5// cars6 7$plural = Str::of('child')->plural();8 9// children
您可以將整數作為第二個引數提供給函式,以檢索字串的單數或複數形式
1use Illuminate\Support\Str;2 3$plural = Str::of('child')->plural(2);4 5// children6 7$plural = Str::of('child')->plural(1);8 9// child
position
position
方法會回傳子字串在字串中首次出現的位置。如果子字串在字串中不存在,則會回傳 false
1use Illuminate\Support\Str;2 3$position = Str::of('Hello, World!')->position('Hello');4 5// 06 7$position = Str::of('Hello, World!')->position('W');8 9// 7
prepend
prepend
方法會將給定的值前置到字串的開頭
1use Illuminate\Support\Str;2 3$string = Str::of('Framework')->prepend('Laravel ');4 5// Laravel Framework
remove
remove
方法會從字串中移除給定的值或值陣列
1use Illuminate\Support\Str;2 3$string = Str::of('Arkansas is quite beautiful!')->remove('quite');4 5// Arkansas is beautiful!
您也可以傳遞 false
作為第二個參數,以在移除字串時忽略大小寫。
repeat
repeat
方法會重複給定的字串
1use Illuminate\Support\Str;2 3$repeated = Str::of('a')->repeat(5);4 5// aaaaa
replace
replace
方法會替換字串中的給定字串
1use Illuminate\Support\Str;2 3$replaced = Str::of('Laravel 6.x')->replace('6.x', '7.x');4 5// Laravel 7.x
replace
方法也接受 caseSensitive
引數。預設情況下,replace
方法區分大小寫
1$replaced = Str::of('macOS 13.x')->replace(2 'macOS', 'iOS', caseSensitive: false3);
replaceArray
replaceArray
方法會使用陣列循序替換字串中的給定值
1use Illuminate\Support\Str;2 3$string = 'The event will take place between ? and ?';4 5$replaced = Str::of($string)->replaceArray('?', ['8:30', '9:00']);6 7// The event will take place between 8:30 and 9:00
replaceFirst
replaceFirst
方法會替換字串中首次出現的給定值
1use Illuminate\Support\Str;2 3$replaced = Str::of('the quick brown fox jumps over the lazy dog')->replaceFirst('the', 'a');4 5// a quick brown fox jumps over the lazy dog
replaceLast
replaceLast
方法會替換字串中最後一次出現的給定值
1use Illuminate\Support\Str;2 3$replaced = Str::of('the quick brown fox jumps over the lazy dog')->replaceLast('the', 'a');4 5// the quick brown fox jumps over a lazy dog
replaceMatches
replaceMatches
方法會將字串中所有與模式匹配的部分替換為給定的替換字串
1use Illuminate\Support\Str;2 3$replaced = Str::of('(+1) 501-555-1000')->replaceMatches('/[^A-Za-z0-9]++/', '')4 5// '15015551000'
replaceMatches
方法也接受一個閉包,該閉包將針對字串中每個與給定模式相符的部分調用,讓您可以在閉包內執行替換邏輯並傳回替換值
1use Illuminate\Support\Str;2 3$replaced = Str::of('123')->replaceMatches('/\d/', function (array $matches) {4 return '['.$matches[0].']';5});6 7// '[1][2][3]'
replaceStart
replaceStart
方法僅在給定值出現在字串開頭時,才會替換第一次出現的該值
1use Illuminate\Support\Str;2 3$replaced = Str::of('Hello World')->replaceStart('Hello', 'Laravel');4 5// Laravel World6 7$replaced = Str::of('Hello World')->replaceStart('World', 'Laravel');8 9// Hello World
replaceEnd
replaceEnd
方法僅在給定值出現在字串結尾時,才會替換最後一次出現的該值
1use Illuminate\Support\Str;2 3$replaced = Str::of('Hello World')->replaceEnd('World', 'Laravel');4 5// Hello Laravel6 7$replaced = Str::of('Hello World')->replaceEnd('Hello', 'Laravel');8 9// Hello World
scan
scan
方法會根據 sscanf
PHP 函數 支援的格式,將字串中的輸入解析為集合
1use Illuminate\Support\Str;2 3$collection = Str::of('filename.jpg')->scan('%[^.].%s');4 5// collect(['filename', 'jpg'])
singular
singular
方法會將字串轉換為單數形式。此函數支援 Laravel 的複數化工具支援的任何語言
1use Illuminate\Support\Str;2 3$singular = Str::of('cars')->singular();4 5// car6 7$singular = Str::of('children')->singular();8 9// child
slug
slug
方法會從給定的字串產生 URL 友善的「slug」(網址別名)
1use Illuminate\Support\Str;2 3$slug = Str::of('Laravel Framework')->slug('-');4 5// laravel-framework
snake
snake
方法會將給定的字串轉換為 snake_case
1use Illuminate\Support\Str;2 3$converted = Str::of('fooBar')->snake();4 5// foo_bar
split
split
方法會使用正規表示式將字串分割成集合
1use Illuminate\Support\Str;2 3$segments = Str::of('one, two, three')->split('/[\s,]+/');4 5// collect(["one", "two", "three"])
squish
squish
方法會移除字串中所有多餘的空白字元,包括單字之間多餘的空白字元
1use Illuminate\Support\Str;2 3$string = Str::of(' laravel framework ')->squish();4 5// laravel framework
start
start
方法會在字串開頭尚未包含給定值的情況下,將給定值的單個實例添加到字串開頭
1use Illuminate\Support\Str;2 3$adjusted = Str::of('this/string')->start('/');4 5// /this/string6 7$adjusted = Str::of('/this/string')->start('/');8 9// /this/string
startsWith
startsWith
方法會判斷給定的字串是否以給定的值開頭
1use Illuminate\Support\Str;2 3$result = Str::of('This is my name')->startsWith('This');4 5// true
stripTags
stripTags
方法會從字串中移除所有 HTML 和 PHP 標籤
1use Illuminate\Support\Str;2 3$result = Str::of('<a href="https://laravel.dev.org.tw">Taylor <b>Otwell</b></a>')->stripTags();4 5// Taylor Otwell6 7$result = Str::of('<a href="https://laravel.dev.org.tw">Taylor <b>Otwell</b></a>')->stripTags('<b>');8 9// Taylor <b>Otwell</b>
studly
studly
方法會將給定的字串轉換為 StudlyCase
1use Illuminate\Support\Str;2 3$converted = Str::of('foo_bar')->studly();4 5// FooBar
substr
substr
方法會回傳由給定的起始位置和長度參數指定的字串部分
1use Illuminate\Support\Str;2 3$string = Str::of('Laravel Framework')->substr(8);4 5// Framework6 7$string = Str::of('Laravel Framework')->substr(8, 5);8 9// Frame
substrReplace
substrReplace
方法會替換字串部分中的文字,從第二個參數指定的位置開始,並替換第三個參數指定的字元數。將 0
傳遞給方法的第三個參數將會在指定位置插入字串,而不會替換字串中的任何現有字元
1use Illuminate\Support\Str;2 3$string = Str::of('1300')->substrReplace(':', 2);4 5// 13:6 7$string = Str::of('The Framework')->substrReplace(' Laravel', 3, 0);8 9// The Laravel Framework
swap
swap
方法會使用 PHP 的 strtr
函數替換字串中的多個值
1use Illuminate\Support\Str;2 3$string = Str::of('Tacos are great!')4 ->swap([5 'Tacos' => 'Burritos',6 'great' => 'fantastic',7 ]);8 9// Burritos are fantastic!
take
take
方法會從字串的開頭回傳指定數量的字元
1use Illuminate\Support\Str;2 3$taken = Str::of('Build something amazing!')->take(5);4 5// Build
tap
tap
方法會將字串傳遞給給定的閉包,讓您檢查字串並與之互動,同時不影響字串本身。無論閉包回傳什麼,tap
方法都會回傳原始字串
1use Illuminate\Support\Str; 2use Illuminate\Support\Stringable; 3 4$string = Str::of('Laravel') 5 ->append(' Framework') 6 ->tap(function (Stringable $string) { 7 dump('String after append: '.$string); 8 }) 9 ->upper();10 11// LARAVEL FRAMEWORK
test
test
方法會判斷字串是否與給定的正規表示式模式匹配
1use Illuminate\Support\Str;2 3$result = Str::of('Laravel Framework')->test('/Laravel/');4 5// true
title
title
方法會將給定的字串轉換為 Title Case
1use Illuminate\Support\Str;2 3$converted = Str::of('a nice title uses the correct case')->title();4 5// A Nice Title Uses The Correct Case
toBase64
toBase64
方法會將給定的字串轉換為 Base64
1use Illuminate\Support\Str;2 3$base64 = Str::of('Laravel')->toBase64();4 5// TGFyYXZlbA==
toHtmlString
toHtmlString
方法會將給定的字串轉換為 Illuminate\Support\HtmlString
的實例,在 Blade 範本中呈現時,該實例將不會被逸出
1use Illuminate\Support\Str;2 3$htmlString = Str::of('Nuno Maduro')->toHtmlString();
transliterate
transliterate
方法會嘗試將給定的字串轉換為最接近的 ASCII 表示形式
1use Illuminate\Support\Str;2 3$email = Str::of('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ')->transliterate()4
trim
trim
方法會修剪給定的字串。與 PHP 原生的 trim
函數不同,Laravel 的 trim
方法也會移除 Unicode 空白字元
1use Illuminate\Support\Str;2 3$string = Str::of(' Laravel ')->trim();4 5// 'Laravel'6 7$string = Str::of('/Laravel/')->trim('/');8 9// 'Laravel'
ltrim
ltrim
方法會修剪字串的左側。與 PHP 原生的 ltrim
函數不同,Laravel 的 ltrim
方法也會移除 Unicode 空白字元
1use Illuminate\Support\Str;2 3$string = Str::of(' Laravel ')->ltrim();4 5// 'Laravel '6 7$string = Str::of('/Laravel/')->ltrim('/');8 9// 'Laravel/'
rtrim
rtrim
方法會修剪給定字串的右側。與 PHP 原生的 rtrim
函數不同,Laravel 的 rtrim
方法也會移除 Unicode 空白字元
1use Illuminate\Support\Str;2 3$string = Str::of(' Laravel ')->rtrim();4 5// ' Laravel'6 7$string = Str::of('/Laravel/')->rtrim('/');8 9// '/Laravel'
ucfirst
ucfirst
方法會回傳給定字串,並將第一個字元轉換為大寫
1use Illuminate\Support\Str;2 3$string = Str::of('foo bar')->ucfirst();4 5// Foo bar
ucsplit
ucsplit
方法會依據大寫字元將給定的字串分割成集合
1use Illuminate\Support\Str;2 3$string = Str::of('Foo Bar')->ucsplit();4 5// collect(['Foo', 'Bar'])
unwrap
unwrap
方法會從給定字串的開頭和結尾移除指定的字串
1use Illuminate\Support\Str;2 3Str::of('-Laravel-')->unwrap('-');4 5// Laravel6 7Str::of('{framework: "Laravel"}')->unwrap('{', '}');8 9// framework: "Laravel"
upper
upper
方法會將給定的字串轉換為大寫
1use Illuminate\Support\Str;2 3$adjusted = Str::of('laravel')->upper();4 5// LARAVEL
when
如果給定的條件為 true
,when
方法會調用給定的閉包。該閉包將會接收流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('Taylor')5 ->when(true, function (Stringable $string) {6 return $string->append(' Otwell');7 });8 9// 'Taylor Otwell'
如有必要,您可以將另一個閉包作為第三個參數傳遞給 when
方法。如果條件參數評估為 false
,則會執行此閉包。
whenContains
如果字串包含給定的值,whenContains
方法會調用給定的閉包。該閉包將會接收流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('tony stark')5 ->whenContains('tony', function (Stringable $string) {6 return $string->title();7 });8 9// 'Tony Stark'
如有必要,您可以將另一個閉包作為第三個參數傳遞給 when
方法。如果字串不包含給定的值,則會執行此閉包。
您也可以傳遞值陣列,以判斷給定的字串是否包含陣列中的任何值
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('tony stark')5 ->whenContains(['tony', 'hulk'], function (Stringable $string) {6 return $string->title();7 });8 9// Tony Stark
whenContainsAll
如果字串包含所有給定的子字串,whenContainsAll
方法會調用給定的閉包。該閉包將會接收流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('tony stark')5 ->whenContainsAll(['tony', 'stark'], function (Stringable $string) {6 return $string->title();7 });8 9// 'Tony Stark'
如有必要,您可以將另一個閉包作為第三個參數傳遞給 when
方法。如果條件參數評估為 false
,則會執行此閉包。
whenEmpty
如果字串為空,whenEmpty
方法會調用給定的閉包。如果閉包回傳一個值,該值也將會由 whenEmpty
方法回傳。如果閉包沒有回傳值,則會回傳流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of(' ')->whenEmpty(function (Stringable $string) {5 return $string->trim()->prepend('Laravel');6});7 8// 'Laravel'
whenNotEmpty
如果字串不為空,whenNotEmpty
方法會調用給定的閉包。如果閉包回傳一個值,該值也將會由 whenNotEmpty
方法回傳。如果閉包沒有回傳值,則會回傳流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('Framework')->whenNotEmpty(function (Stringable $string) {5 return $string->prepend('Laravel ');6});7 8// 'Laravel Framework'
whenStartsWith
如果字串以給定的子字串開頭,whenStartsWith
方法會調用給定的閉包。該閉包將會接收流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('disney world')->whenStartsWith('disney', function (Stringable $string) {5 return $string->title();6});7 8// 'Disney World'
whenEndsWith
如果字串以給定的子字串結尾,whenEndsWith
方法會調用給定的閉包。該閉包將會接收流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('disney world')->whenEndsWith('world', function (Stringable $string) {5 return $string->title();6});7 8// 'Disney World'
whenExactly
如果字串與給定的字串完全匹配,whenExactly
方法會調用給定的閉包。該閉包將會接收流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('laravel')->whenExactly('laravel', function (Stringable $string) {5 return $string->title();6});7 8// 'Laravel'
whenNotExactly
如果字串與給定的字串不完全匹配,whenNotExactly
方法會調用給定的閉包。該閉包將會接收流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('framework')->whenNotExactly('laravel', function (Stringable $string) {5 return $string->title();6});7 8// 'Framework'
whenIs
如果字串與給定的模式匹配,whenIs
方法會調用給定的閉包。星號可以用作萬用字元值。該閉包將會接收流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('foo/bar')->whenIs('foo/*', function (Stringable $string) {5 return $string->append('/baz');6});7 8// 'foo/bar/baz'
whenIsAscii
如果字串為 7 位元 ASCII,whenIsAscii
方法會調用給定的閉包。該閉包將會接收流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('laravel')->whenIsAscii(function (Stringable $string) {5 return $string->title();6});7 8// 'Laravel'
whenIsUlid
如果字串為有效的 ULID,whenIsUlid
方法會調用給定的閉包。該閉包將會接收流暢字串實例
1use Illuminate\Support\Str;2 3$string = Str::of('01gd6r360bp37zj17nxb55yv40')->whenIsUlid(function (Stringable $string) {4 return $string->substr(0, 8);5});6 7// '01gd6r36'
whenIsUuid
如果字串為有效的 UUID,whenIsUuid
方法會調用給定的閉包。該閉包將會接收流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->whenIsUuid(function (Stringable $string) {5 return $string->substr(0, 8);6});7 8// 'a0a2a2d2'
whenTest
如果字串與給定的正規表示式匹配,whenTest
方法會調用給定的閉包。該閉包將會接收流暢字串實例
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('laravel framework')->whenTest('/laravel/', function (Stringable $string) {5 return $string->title();6});7 8// 'Laravel Framework'
wordCount
wordCount
方法會回傳字串包含的單字數量
1use Illuminate\Support\Str;2 3Str::of('Hello, world!')->wordCount(); // 2
words
words
方法會限制字串中的單字數量。如有必要,您可以指定一個額外的字串,該字串將會附加到截斷的字串
1use Illuminate\Support\Str;2 3$string = Str::of('Perfectly balanced, as all things should be.')->words(3, ' >>>');4 5// Perfectly balanced, as >>>
wrap
wrap
方法會使用額外的字串或一對字串包裹給定的字串
1use Illuminate\Support\Str;2 3Str::of('Laravel')->wrap('"');4 5// "Laravel"6 7Str::is('is')->wrap(before: 'This ', after: ' Laravel!');8 9// This is Laravel!