字串
簡介
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::doesntEndWith Str::doesntStartWith Str::deduplicate Str::endsWith Str::excerpt Str::finish Str::fromBase64 Str::headline Str::initials 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::match Str::matchAll Str::isMatch 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::ucwords Str::upper Str::ulid Str::unwrap Str::uuid Str::uuid7 Str::wordCount Str::wordWrap Str::words Str::wrap str trans trans_choice
流式字串 (Fluent Strings)
after afterLast apa append ascii basename before beforeLast between betweenFirst camel charAt classBasename chopStart chopEnd contains containsAll decrypt deduplicate dirname doesntContain doesntEndWith doesntStartWith encrypt endsWith exactly excerpt explode finish fromBase64 hash headline initials 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 toUri transliterate trim ltrim rtrim ucfirst ucsplit ucwords unwrap upper when whenContains whenContainsAll whenDoesntEndWith whenDoesntStartWith 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 指南將給定的字串轉換為標題格式 (title case)。
1use Illuminate\Support\Str;2 3$title = Str::apa('Creating A Project');4 5// 'Creating a Project'
Str::ascii()
Str::ascii 方法將嘗試把字串轉寫 (transliterate) 為 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.com.tw', 'https://');4 5// 'laravel.com'
你也可以傳入一個數組作為第二個引數。如果字串以陣列中的任何值開頭,那麼該值將從字串中移除。
1use Illuminate\Support\Str;2 3$url = Str::chopStart('https://laravel.com.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', 'framework']);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::doesntEndWith()
Str::doesntEndWith 方法確定給定字串是否不以給定值結尾。
1use Illuminate\Support\Str;2 3$result = Str::doesntEndWith('This is my name', 'dog');4 5// true
你也可以傳入一個值陣列來確定字串是否不以陣列中的任何值結尾。
1use Illuminate\Support\Str;2 3$result = Str::doesntEndWith('This is my name', ['this', 'foo']);4 5// true6 7$result = Str::doesntEndWith('This is my name', ['name', 'foo']);8 9// false
Str::doesntStartWith()
Str::doesntStartWith 方法確定給定字串是否不以給定值開頭。
1use Illuminate\Support\Str;2 3$result = Str::doesntStartWith('This is my name', 'That');4 5// true
如果傳入一個可能的候選值陣列,且字串不以任何給定值開頭,doesntStartWith 方法將返回 true。
1$result = Str::doesntStartWith('This is my name', ['What', 'That', 'There']);2 3// true
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::fromBase64()
Str::fromBase64 方法對給定的 Base64 字串進行解碼。
1use Illuminate\Support\Str;2 3$decoded = Str::fromBase64('TGFyYXZlbA==');4 5// Laravel
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::initials()
Str::initials 方法將返回給定字串的首字母縮寫,並可選擇將其大寫。
1use Illuminate\Support\Str;2 3$initials = Str::initials('taylor otwell');4 5// to6 7$initials = Str::initials('taylor otwell', capitalize: true);8 9// TO
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,你應該透過 HTML Purifier 對編譯後的 Markdown 進行過濾。
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
你還可以按版本(1, 3, 4, 5, 6, 7 或 8)驗證給定 UUID 是否符合 UUID 規範。
1use Illuminate\Support\Str;2 3$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de', version: 4);4 5// true6 7$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de', version: 1);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,你應該透過 HTML Purifier 對編譯後的 Markdown 進行過濾。
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::match()
Str::match 方法返回字串中匹配給定正則表示式模式的部分。
1use Illuminate\Support\Str;2 3$result = Str::match('/bar/', 'foo bar');4 5// 'bar'6 7$result = Str::match('/foo (.*)/', 'foo bar');8 9// 'bar'
Str::matchAll()
Str::matchAll 方法返回一個集合,其中包含字串中與給定正則表示式匹配的所有部分。
1use Illuminate\Support\Str;2 3$result = Str::matchAll('/bar/', 'bar foo bar');4 5// collect(['bar', 'bar'])
如果在表示式中指定了匹配組,Laravel 將返回包含第一個匹配組結果的集合。
1use Illuminate\Support\Str;2 3$result = Str::matchAll('/f(\w*)/', 'bar fun bar fly');4 5// collect(['un', 'ly']);
如果沒有找到匹配項,將返回一個空集合。
Str::isMatch()
如果字串匹配給定的正則表示式,Str::isMatch 方法將返回 true。
1use Illuminate\Support\Str;2 3$result = Str::isMatch('/foo (.*)/', 'foo bar');4 5// true6 7$result = Str::isMatch('/foo (.*)/', 'laravel');8 9// false
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
可以使用 prependCount 引數在複數化後的字串前加上格式化後的 $count。
1use Illuminate\Support\Str;2 3$label = Str::plural('car', 1000, prependCount: true);4 5// 1,000 cars
Str::pluralStudly()
Str::pluralStudly 方法將 StudlyCase 格式的單數詞轉換為複數形式。此函式支援 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.
你也可以向 remove 方法傳遞 false 作為第三個引數,以在移除字串時忽略大小寫。
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 11.x';4 5$replaced = Str::replace('11.x', '12.x', $string);6 7// Laravel 12.x
replace 方法還接受一個 caseSensitive 引數。預設情況下,該方法區分大小寫。
1$replaced = Str::replace(2 'php',3 'Laravel',4 'PHP Framework for Web Artisans',5 caseSensitive: false6);7 8// Laravel Framework for Web Artisans
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 方法返回由起始和長度引數指定的字串部分。
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::ucwords()
Str::ucwords 方法將給定字串中每個單詞的首字母轉換為大寫。
1use Illuminate\Support\Str;2 3$string = Str::ucwords('laravel framework');4 5// Laravel Framework
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::uuid7()
Str::uuid7 方法生成一個 UUID(版本 7)。
1use Illuminate\Support\Str;2 3return (string) Str::uuid7();
可以傳遞一個 DateTimeInterface 作為可選引數,用於生成排序 UUID。
1return (string) Str::uuid7(time: now());
Str::wordCount()
Str::wordCount 方法返回字串包含的單詞數。
1use Illuminate\Support\Str;2 3Str::wordCount('Hello, world!'); // 2
Str::wordWrap()
Str::wordWrap 方法將字串換行到指定的字元數。
1use Illuminate\Support\Str; 2 3$text = "The quick brown fox jumped over the lazy dog." 4 5Str::wordWrap($text, characters: 20, break: "<br />\n"); 6 7/* 8The quick brown fox<br /> 9jumped over the lazy<br />10dog.11*/
Str::words()
Str::words 方法限制字串中的單詞數量。可以透過第三個引數傳遞一個附加字串,指定在截斷字串末尾應追加的內容。
1use Illuminate\Support\Str;2 3return Str::words('Perfectly balanced, as all things should be.', 3, ' >>>');4 5// Perfectly balanced, as >>>
Str::wrap()
Str::wrap 方法用附加字串或一對字串包裹給定的字串。
1use Illuminate\Support\Str;2 3Str::wrap('Laravel', '"');4 5// "Laravel"6 7Str::wrap('is', before: 'This ', after: ' Laravel!');8 9// This is Laravel!
str()
str 函式返回給定字串的一個新的 Illuminate\Support\Stringable 例項。此函式等同於 Str::of 方法。
1$string = str('Taylor')->append(' Otwell');2 3// 'Taylor Otwell'
如果沒有向 str 函式提供引數,該函式將返回 Illuminate\Support\Str 的一個例項。
1$snake = str()->snake('FooBar');2 3// 'foo_bar'
trans()
trans 函式使用你的語言檔案來翻譯給定的翻譯鍵。
1echo 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.com.tw')->chopStart('https://');4 5// 'laravel.com'
你也可以傳入一個數組。如果字串以陣列中的任何值開頭,那麼該值將從字串中移除。
1use Illuminate\Support\Str;2 3$url = Str::of('https://laravel.com.tw')->chopStart(['https://', 'http://']);4 5// 'laravel.com'
chopEnd
chopEnd 方法僅在給定值出現在字串結尾時,移除最後一次出現的該值。
1use Illuminate\Support\Str;2 3$url = Str::of('https://laravel.com.tw')->chopEnd('.com');4 5// 'https://laravel'
你也可以傳入一個數組。如果字串以陣列中的任何值結尾,那麼該值將從字串中移除。
1use Illuminate\Support\Str;2 3$url = Str::of('https://laravel.com.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
decrypt
decrypt 方法解密加密後的字串。
1use Illuminate\Support\Str;2 3$decrypted = $encrypted->decrypt();4 5// 'secret'
有關 decrypt 的反向操作,請參見 encrypt 方法。
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'
doesntContain()
doesntContain 方法確定給定的字串是否不包含給定的值。該方法是 contains 方法的反向操作。預設情況下,此方法區分大小寫。
1use Illuminate\Support\Str;2 3$doesntContain = Str::of('This is name')->doesntContain('my');4 5// true
你也可以傳入一個值陣列,以確定給定的字串是否不包含陣列中的任何值。
1use Illuminate\Support\Str;2 3$doesntContain = Str::of('This is name')->doesntContain(['my', 'framework']);4 5// true
你可以透過將 ignoreCase 引數設定為 true 來停用大小寫敏感性。
1use Illuminate\Support\Str;2 3$doesntContain = Str::of('This is my name')->doesntContain('MY', ignoreCase: true);4 5// false
doesntEndWith
doesntEndWith 方法確定給定的字串是否不以給定值結尾。
1use Illuminate\Support\Str;2 3$result = Str::of('This is my name')->doesntEndWith('dog');4 5// true
你也可以傳入一個值陣列來確定字串是否不以陣列中的任何值結尾。
1use Illuminate\Support\Str;2 3$result = Str::of('This is my name')->doesntEndWith(['this', 'foo']);4 5// true6 7$result = Str::of('This is my name')->doesntEndWith(['name', 'foo']);8 9// false
doesntStartWith
doesntStartWith 方法確定給定的字串是否不以給定值開頭。
1use Illuminate\Support\Str;2 3$result = Str::of('This is my name')->doesntStartWith('That');4 5// true
你也可以傳入一個值陣列,以確定給定的字串是否不以陣列中的任何值開頭。
1use Illuminate\Support\Str;2 3$result = Str::of('This is my name')->doesntStartWith(['What', 'That', 'There']);4 5// true
encrypt
encrypt 方法加密該字串。
1use Illuminate\Support\Str;2 3$encrypted = Str::of('secret')->encrypt();
有關 encrypt 的反向操作,請參見 decrypt 方法。
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/
fromBase64
fromBase64 方法對給定的 Base64 字串進行解碼。
1use Illuminate\Support\Str;2 3$decoded = Str::of('TGFyYXZlbA==')->fromBase64();4 5// Laravel
hash
hash 方法使用給定的演算法對字串進行雜湊處理。
1use Illuminate\Support\Str;2 3$hashed = Str::of('secret')->hash(algorithm: 'sha256');4 5// '2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b'
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
initials
initials 方法將字串轉換為其首字母縮寫。
1use Illuminate\Support\Str;2 3$initials = Str::of('Taylor Otwell')->initials()->upper();4 5// TO
inlineMarkdown
inlineMarkdown 方法使用 CommonMark 將 GitHub 風格的 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,你應該透過 HTML Purifier 對編譯後的 Markdown 進行過濾。
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
你還可以按版本(1, 3, 4, 5, 6, 7 或 8)驗證給定 UUID 是否符合 UUID 規範。
1use Illuminate\Support\Str;2 3$isUuid = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->isUuid(version: 4);4 5// true6 7$isUuid = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->isUuid(version: 1);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 風格的 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,你應該透過 HTML Purifier 對編譯後的 Markdown 進行過濾。
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
可以使用 prependCount 引數在複數化後的字串前加上格式化後的 $count。
1use Illuminate\Support\Str;2 3$label = Str::of('car')->plural(1000, prependCount: true);4 5// 1,000 cars
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 引數。預設情況下,該方法區分大小寫。
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 方法根據 PHP sscanf 函式支援的格式將輸入解析為集合。
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
你也可以傳入一個值陣列,以確定給定的字串是否以陣列中的任何值開頭。
1use Illuminate\Support\Str;2 3$result = Str::of('This is my name')->startsWith(['This', 'That']);4 5// true
stripTags
stripTags 方法從字串中移除所有 HTML 和 PHP 標籤。
1use Illuminate\Support\Str;2 3$result = Str::of('<a href="https://laravel.com.tw">Taylor <b>Otwell</b></a>')->stripTags();4 5// Taylor Otwell6 7$result = Str::of('<a href="https://laravel.com.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();
toUri
toUri 方法將給定的字串轉換為 Illuminate\Support\Uri 例項。
1use Illuminate\Support\Str;2 3$uri = Str::of('https://example.com')->toUri();
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'])
ucwords
ucwords 方法將給定字串中每個單詞的首字母轉換為大寫。
1use Illuminate\Support\Str;2 3$string = Str::of('laravel framework')->ucwords();4 5// Laravel Framework
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'
如有需要,你可以將另一個閉包作為第三個引數傳遞。如果字串不包含給定值,則呼叫該閉包。
你也可以傳入一個數組來確定字串是否包含陣列中的任何值。
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'
如有需要,你可以將另一個閉包作為第三個引數傳遞。如果條件引數計算為 false,則呼叫該閉包。
whenDoesntEndWith
如果字串不以給定子字串結尾,whenDoesntEndWith 方法將呼叫給定的閉包。閉包將接收流式字串例項。
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('disney world')->whenDoesntEndWith('land', function (Stringable $string) {5 return $string->title();6});7 8// 'Disney World'
whenDoesntStartWith
如果字串不以給定子字串開頭,whenDoesntStartWith 方法將呼叫給定的閉包。閉包將接收流式字串例項。
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of('disney world')->whenDoesntStartWith('sea', function (Stringable $string) {5 return $string->title();6});7 8// 'Disney World'
whenEmpty
如果字串為空,whenEmpty 方法將呼叫給定的閉包。如果閉包返回一個值,該值也將由 whenEmpty 方法返回。如果閉包不返回任何值,則返回流式字串例項。
1use Illuminate\Support\Str;2use Illuminate\Support\Stringable;3 4$string = Str::of(' ')->trim()->whenEmpty(function (Stringable $string) {5 return $string->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!