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