翻譯進度
44.75% 已翻譯
更新時間:
2024年6月30日 上午8:27:00 [世界標準時間]
翻譯人員:
幫我們翻譯此頁

輔助函式

簡介

Laravel 提供了多種全域 PHP「輔助函式」。這些函式中,大部分都是 Laravel 本身有在使用的。不過,若你覺得這些方法很方便的話,也可以在你自己的專案內使用。

可用的方法

陣列與物件

路徑

字串

Fluent 字串

URL

其他

方法清單

陣列與物件

Arr::accessible()

Arr::accessible 方法判斷給定的值是否能以陣列方式存取:

1use Illuminate\Support\Arr;
2use Illuminate\Support\Collection;
3 
4$isAccessible = Arr::accessible(['a' => 1, 'b' => 2]);
5 
6// true
7 
8$isAccessible = Arr::accessible(new Collection);
9 
10// true
11 
12$isAccessible = Arr::accessible('abc');
13 
14// false
15 
16$isAccessible = Arr::accessible(new stdClass);
17 
18// false
1use Illuminate\Support\Arr;
2use Illuminate\Support\Collection;
3 
4$isAccessible = Arr::accessible(['a' => 1, 'b' => 2]);
5 
6// true
7 
8$isAccessible = Arr::accessible(new Collection);
9 
10// true
11 
12$isAccessible = Arr::accessible('abc');
13 
14// false
15 
16$isAccessible = Arr::accessible(new stdClass);
17 
18// false

Arr::add()

Arr::add 方法會在給定的索引鍵 / 值配對不存在於給定陣列、或是該索引鍵的值 null 時將該配對新增到陣列上:

1use Illuminate\Support\Arr;
2 
3$array = Arr::add(['name' => 'Desk'], 'price', 100);
4 
5// ['name' => 'Desk', 'price' => 100]
6 
7$array = Arr::add(['name' => 'Desk', 'price' => null], 'price', 100);
8 
9// ['name' => 'Desk', 'price' => 100]
1use Illuminate\Support\Arr;
2 
3$array = Arr::add(['name' => 'Desk'], 'price', 100);
4 
5// ['name' => 'Desk', 'price' => 100]
6 
7$array = Arr::add(['name' => 'Desk', 'price' => null], 'price', 100);
8 
9// ['name' => 'Desk', 'price' => 100]

Arr::collapse()

Arr::collapse 方法將一組陣列的陣列坍縮(Collapse)成單一陣列:

1use Illuminate\Support\Arr;
2 
3$array = Arr::collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
4 
5// [1, 2, 3, 4, 5, 6, 7, 8, 9]
1use Illuminate\Support\Arr;
2 
3$array = Arr::collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
4 
5// [1, 2, 3, 4, 5, 6, 7, 8, 9]

Arr::crossJoin()

Arr::crossJoin 方法交叉合併(Cross Join)給定的陣列,產生一個包含所有可能排列(Permutation)笛卡兒積(Cartesian Product)

1use Illuminate\Support\Arr;
2 
3$matrix = Arr::crossJoin([1, 2], ['a', 'b']);
4 
5/*
6 [
7 [1, 'a'],
8 [1, 'b'],
9 [2, 'a'],
10 [2, 'b'],
11 ]
12*/
13 
14$matrix = Arr::crossJoin([1, 2], ['a', 'b'], ['I', 'II']);
15 
16/*
17 [
18 [1, 'a', 'I'],
19 [1, 'a', 'II'],
20 [1, 'b', 'I'],
21 [1, 'b', 'II'],
22 [2, 'a', 'I'],
23 [2, 'a', 'II'],
24 [2, 'b', 'I'],
25 [2, 'b', 'II'],
26 ]
27*/
1use Illuminate\Support\Arr;
2 
3$matrix = Arr::crossJoin([1, 2], ['a', 'b']);
4 
5/*
6 [
7 [1, 'a'],
8 [1, 'b'],
9 [2, 'a'],
10 [2, 'b'],
11 ]
12*/
13 
14$matrix = Arr::crossJoin([1, 2], ['a', 'b'], ['I', 'II']);
15 
16/*
17 [
18 [1, 'a', 'I'],
19 [1, 'a', 'II'],
20 [1, 'b', 'I'],
21 [1, 'b', 'II'],
22 [2, 'a', 'I'],
23 [2, 'a', 'II'],
24 [2, 'b', 'I'],
25 [2, 'b', 'II'],
26 ]
27*/

Arr::divide()

Arr::divide 方法回傳兩個陣列:一個陣列包含給定陣列的索引鍵,而另一個陣列則包含給定陣列的值:

1use Illuminate\Support\Arr;
2 
3[$keys, $values] = Arr::divide(['name' => 'Desk']);
4 
5// $keys: ['name']
6 
7// $values: ['Desk']
1use Illuminate\Support\Arr;
2 
3[$keys, $values] = Arr::divide(['name' => 'Desk']);
4 
5// $keys: ['name']
6 
7// $values: ['Desk']

Arr::dot()

Arr::dot 方法將多為陣列扁平化(Flatten)為一個使用「點 (.)」標記法來表示深度的一維陣列:

1use Illuminate\Support\Arr;
2 
3$array = ['products' => ['desk' => ['price' => 100]]];
4 
5$flattened = Arr::dot($array);
6 
7// ['products.desk.price' => 100]
1use Illuminate\Support\Arr;
2 
3$array = ['products' => ['desk' => ['price' => 100]]];
4 
5$flattened = Arr::dot($array);
6 
7// ['products.desk.price' => 100]

Arr::except()

Arr::except 方法從陣列中移除給定的索引鍵 / 值配對:

1use Illuminate\Support\Arr;
2 
3$array = ['name' => 'Desk', 'price' => 100];
4 
5$filtered = Arr::except($array, ['price']);
6 
7// ['name' => 'Desk']
1use Illuminate\Support\Arr;
2 
3$array = ['name' => 'Desk', 'price' => 100];
4 
5$filtered = Arr::except($array, ['price']);
6 
7// ['name' => 'Desk']

Arr::exists()

Arr::exists 方法會檢查給定的索引鍵是否存在於提供的陣列中:

1use Illuminate\Support\Arr;
2 
3$array = ['name' => 'John Doe', 'age' => 17];
4 
5$exists = Arr::exists($array, 'name');
6 
7// true
8 
9$exists = Arr::exists($array, 'salary');
10 
11// false
1use Illuminate\Support\Arr;
2 
3$array = ['name' => 'John Doe', 'age' => 17];
4 
5$exists = Arr::exists($array, 'name');
6 
7// true
8 
9$exists = Arr::exists($array, 'salary');
10 
11// false

Arr::first()

Arr::first 方法會回傳該陣列中通過給定布林測試的第一個元素:

1use Illuminate\Support\Arr;
2 
3$array = [100, 200, 300];
4 
5$first = Arr::first($array, function ($value, $key) {
6 return $value >= 150;
7});
8 
9// 200
1use Illuminate\Support\Arr;
2 
3$array = [100, 200, 300];
4 
5$first = Arr::first($array, function ($value, $key) {
6 return $value >= 150;
7});
8 
9// 200

也可以在第三個引數上提供一個預設值給該方法。若沒有任何值通過條件測試,就會回傳這個預設值:

1use Illuminate\Support\Arr;
2 
3$first = Arr::first($array, $callback, $default);
1use Illuminate\Support\Arr;
2 
3$first = Arr::first($array, $callback, $default);

Arr::flatten()

Arr::flatten 方法會將一個多維陣列扁平化(Flatten)為單一維度:

1use Illuminate\Support\Arr;
2 
3$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];
4 
5$flattened = Arr::flatten($array);
6 
7// ['Joe', 'PHP', 'Ruby']
1use Illuminate\Support\Arr;
2 
3$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];
4 
5$flattened = Arr::flatten($array);
6 
7// ['Joe', 'PHP', 'Ruby']

Arr::forget()

Arr::forget 方法使用「點 (.)」標記法來在多層巢狀陣列中移除給定的索引鍵 / 值配對:

1use Illuminate\Support\Arr;
2 
3$array = ['products' => ['desk' => ['price' => 100]]];
4 
5Arr::forget($array, 'products.desk');
6 
7// ['products' => []]
1use Illuminate\Support\Arr;
2 
3$array = ['products' => ['desk' => ['price' => 100]]];
4 
5Arr::forget($array, 'products.desk');
6 
7// ['products' => []]

Arr::get()

Arr::get 方法使用「點 (.)」標記法來在多層巢狀陣列中取值:

1use Illuminate\Support\Arr;
2 
3$array = ['products' => ['desk' => ['price' => 100]]];
4 
5$price = Arr::get($array, 'products.desk.price');
6 
7// 100
1use Illuminate\Support\Arr;
2 
3$array = ['products' => ['desk' => ['price' => 100]]];
4 
5$price = Arr::get($array, 'products.desk.price');
6 
7// 100

Arr::get 還接受一個預設值。若指定的索引鍵不存在時會回傳該預設值:

1use Illuminate\Support\Arr;
2 
3$discount = Arr::get($array, 'products.desk.discount', 0);
4 
5// 0
1use Illuminate\Support\Arr;
2 
3$discount = Arr::get($array, 'products.desk.discount', 0);
4 
5// 0

Arr::has()

Arr::has 方法使用「點 (.)」標記法來檢查給定的一個或多個項目是否存在:

1use Illuminate\Support\Arr;
2 
3$array = ['product' => ['name' => 'Desk', 'price' => 100]];
4 
5$contains = Arr::has($array, 'product.name');
6 
7// true
8 
9$contains = Arr::has($array, ['product.price', 'product.discount']);
10 
11// false
1use Illuminate\Support\Arr;
2 
3$array = ['product' => ['name' => 'Desk', 'price' => 100]];
4 
5$contains = Arr::has($array, 'product.name');
6 
7// true
8 
9$contains = Arr::has($array, ['product.price', 'product.discount']);
10 
11// false

Arr::hasAny()

Arr::hasAny 方法使用「點 (.)」標記法來檢查給定的多個項目中是否只少有一個存在:

1use Illuminate\Support\Arr;
2 
3$array = ['product' => ['name' => 'Desk', 'price' => 100]];
4 
5$contains = Arr::hasAny($array, 'product.name');
6 
7// true
8 
9$contains = Arr::hasAny($array, ['product.name', 'product.discount']);
10 
11// true
12 
13$contains = Arr::hasAny($array, ['category', 'product.discount']);
14 
15// false
1use Illuminate\Support\Arr;
2 
3$array = ['product' => ['name' => 'Desk', 'price' => 100]];
4 
5$contains = Arr::hasAny($array, 'product.name');
6 
7// true
8 
9$contains = Arr::hasAny($array, ['product.name', 'product.discount']);
10 
11// true
12 
13$contains = Arr::hasAny($array, ['category', 'product.discount']);
14 
15// false

Arr::isAssoc()

若給定的陣列為關聯式陣列(Associative Array)Arr::isAssoc 方法會回傳 true。當某個陣列的索引鍵不是以 0 開始依序排列的數字時,就是「關聯式」的陣列:

1use Illuminate\Support\Arr;
2 
3$isAssoc = Arr::isAssoc(['product' => ['name' => 'Desk', 'price' => 100]]);
4 
5// true
6 
7$isAssoc = Arr::isAssoc([1, 2, 3]);
8 
9// false
1use Illuminate\Support\Arr;
2 
3$isAssoc = Arr::isAssoc(['product' => ['name' => 'Desk', 'price' => 100]]);
4 
5// true
6 
7$isAssoc = Arr::isAssoc([1, 2, 3]);
8 
9// false

Arr::isList()

若給定陣列的索引鍵是從 0 開始的有序整數的話,Arr::isList 方法會回傳 true

1use Illuminate\Support\Arr;
2 
3$isList = Arr::isList(['foo', 'bar', 'baz']);
4 
5// true
6 
7$isList = Arr::isList(['product' => ['name' => 'Desk', 'price' => 100]]);
8 
9// false
1use Illuminate\Support\Arr;
2 
3$isList = Arr::isList(['foo', 'bar', 'baz']);
4 
5// true
6 
7$isList = Arr::isList(['product' => ['name' => 'Desk', 'price' => 100]]);
8 
9// false

Arr::join()

Arr::join 方法可使用字串來將各個陣列元素串接在一起。也可以用該方法的第二個引數來指定用於串接陣列中最後一個元素的字串:

1use Illuminate\Support\Arr;
2 
3$array = ['Tailwind', 'Alpine', 'Laravel', 'Livewire'];
4 
5$joined = Arr::join($array, ', ');
6 
7// Tailwind, Alpine, Laravel, Livewire
8 
9$joined = Arr::join($array, ', ', ' and ');
10 
11// Tailwind, Alpine, Laravel and Livewire
1use Illuminate\Support\Arr;
2 
3$array = ['Tailwind', 'Alpine', 'Laravel', 'Livewire'];
4 
5$joined = Arr::join($array, ', ');
6 
7// Tailwind, Alpine, Laravel, Livewire
8 
9$joined = Arr::join($array, ', ', ' and ');
10 
11// Tailwind, Alpine, Laravel and Livewire

Arr::keyBy()

Arr::keyBy 方法依照給定的索引鍵來為該陣列加上索引鍵。若多個項目有相同的索引鍵,則新的陣列中只會包含最後一個項目:

1use Illuminate\Support\Arr;
2 
3$array = [
4 ['product_id' => 'prod-100', 'name' => 'Desk'],
5 ['product_id' => 'prod-200', 'name' => 'Chair'],
6];
7 
8$keyed = Arr::keyBy($array, 'product_id');
9 
10/*
11 [
12 'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'],
13 'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'],
14 ]
15*/
1use Illuminate\Support\Arr;
2 
3$array = [
4 ['product_id' => 'prod-100', 'name' => 'Desk'],
5 ['product_id' => 'prod-200', 'name' => 'Chair'],
6];
7 
8$keyed = Arr::keyBy($array, 'product_id');
9 
10/*
11 [
12 'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'],
13 'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'],
14 ]
15*/

Arr::last()

Arr::last 方法會回傳該陣列中通過給定布林測試的最後一個元素:

1use Illuminate\Support\Arr;
2 
3$array = [100, 200, 300, 110];
4 
5$last = Arr::last($array, function ($value, $key) {
6 return $value >= 150;
7});
8 
9// 300
1use Illuminate\Support\Arr;
2 
3$array = [100, 200, 300, 110];
4 
5$last = Arr::last($array, function ($value, $key) {
6 return $value >= 150;
7});
8 
9// 300

可以在第三個引數上提供一個預設值給該方法。若沒有任何值通過條件測試,就會回傳這個預設值:

1use Illuminate\Support\Arr;
2 
3$last = Arr::last($array, $callback, $default);
1use Illuminate\Support\Arr;
2 
3$last = Arr::last($array, $callback, $default);

Arr::map()

Arr::map 可用於迭代整個陣列,並將各個陣列值與索引鍵傳入給定的回呼中。陣列值會被回呼中回傳的值給取代:

1use Illuminate\Support\Arr;
2 
3$array = ['first' => 'james', 'last' => 'kirk'];
4 
5$mapped = Arr::map($array, function ($value, $key) {
6 return ucfirst($value);
7});
8 
9// ['first' => 'James', 'last' => 'Kirk']
1use Illuminate\Support\Arr;
2 
3$array = ['first' => 'james', 'last' => 'kirk'];
4 
5$mapped = Arr::map($array, function ($value, $key) {
6 return ucfirst($value);
7});
8 
9// ['first' => 'James', 'last' => 'Kirk']

Arr::only()

Arr::only 方法回傳給定陣列中特定的索引鍵 / 值配對:

1use Illuminate\Support\Arr;
2 
3$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];
4 
5$slice = Arr::only($array, ['name', 'price']);
6 
7// ['name' => 'Desk', 'price' => 100]
1use Illuminate\Support\Arr;
2 
3$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];
4 
5$slice = Arr::only($array, ['name', 'price']);
6 
7// ['name' => 'Desk', 'price' => 100]

Arr::pluck()

Arr::pluck 方法可從給定陣列中取得給定索引鍵內的所有值:

1use Illuminate\Support\Arr;
2 
3$array = [
4 ['developer' => ['id' => 1, 'name' => 'Taylor']],
5 ['developer' => ['id' => 2, 'name' => 'Abigail']],
6];
7 
8$names = Arr::pluck($array, 'developer.name');
9 
10// ['Taylor', 'Abigail']
1use Illuminate\Support\Arr;
2 
3$array = [
4 ['developer' => ['id' => 1, 'name' => 'Taylor']],
5 ['developer' => ['id' => 2, 'name' => 'Abigail']],
6];
7 
8$names = Arr::pluck($array, 'developer.name');
9 
10// ['Taylor', 'Abigail']

也可以指定產生的清單要如何設定索引鍵:

1use Illuminate\Support\Arr;
2 
3$names = Arr::pluck($array, 'developer.name', 'developer.id');
4 
5// [1 => 'Taylor', 2 => 'Abigail']
1use Illuminate\Support\Arr;
2 
3$names = Arr::pluck($array, 'developer.name', 'developer.id');
4 
5// [1 => 'Taylor', 2 => 'Abigail']

Arr::prepend()

Arr::prepend 方法會將某個項目放到該陣列的最前面:

1use Illuminate\Support\Arr;
2 
3$array = ['one', 'two', 'three', 'four'];
4 
5$array = Arr::prepend($array, 'zero');
6 
7// ['zero', 'one', 'two', 'three', 'four']
1use Illuminate\Support\Arr;
2 
3$array = ['one', 'two', 'three', 'four'];
4 
5$array = Arr::prepend($array, 'zero');
6 
7// ['zero', 'one', 'two', 'three', 'four']

若有需要,也可以指定該值要使用的索引鍵:

1use Illuminate\Support\Arr;
2 
3$array = ['price' => 100];
4 
5$array = Arr::prepend($array, 'Desk', 'name');
6 
7// ['name' => 'Desk', 'price' => 100]
1use Illuminate\Support\Arr;
2 
3$array = ['price' => 100];
4 
5$array = Arr::prepend($array, 'Desk', 'name');
6 
7// ['name' => 'Desk', 'price' => 100]

Arr::prependKeysWith()

Arr::prependKeysWith 會將關聯式陣列中,將所有的索引鍵名稱加上給定的前置詞:

1use Illuminate\Support\Arr;
2 
3$array = [
4 'name' => 'Desk',
5 'price' => 100,
6];
7 
8$keyed = Arr::prependKeysWith($array, 'product.');
9 
10/*
11 [
12 'product.name' => 'Desk',
13 'product.price' => 100,
14 ]
15*/
1use Illuminate\Support\Arr;
2 
3$array = [
4 'name' => 'Desk',
5 'price' => 100,
6];
7 
8$keyed = Arr::prependKeysWith($array, 'product.');
9 
10/*
11 [
12 'product.name' => 'Desk',
13 'product.price' => 100,
14 ]
15*/

Arr::pull()

Arr::pull 方法從陣列中移除一組索引鍵 / 值配對:

1use Illuminate\Support\Arr;
2 
3$array = ['name' => 'Desk', 'price' => 100];
4 
5$name = Arr::pull($array, 'name');
6 
7// $name: Desk
8 
9// $array: ['price' => 100]
1use Illuminate\Support\Arr;
2 
3$array = ['name' => 'Desk', 'price' => 100];
4 
5$name = Arr::pull($array, 'name');
6 
7// $name: Desk
8 
9// $array: ['price' => 100]

可以在第三個引數上提供一個預設值給該方法。若指定的索引鍵不存在,就會回傳這個預設值:

1use Illuminate\Support\Arr;
2 
3$value = Arr::pull($array, $key, $default);
1use Illuminate\Support\Arr;
2 
3$value = Arr::pull($array, $key, $default);

Arr::query()

Arr::query 方法將該陣列轉換為查詢字串(Query String)

1use Illuminate\Support\Arr;
2 
3$array = [
4 'name' => 'Taylor',
5 'order' => [
6 'column' => 'created_at',
7 'direction' => 'desc'
8 ]
9];
10 
11Arr::query($array);
12 
13// name=Taylor&order[column]=created_at&order[direction]=desc
1use Illuminate\Support\Arr;
2 
3$array = [
4 'name' => 'Taylor',
5 'order' => [
6 'column' => 'created_at',
7 'direction' => 'desc'
8 ]
9];
10 
11Arr::query($array);
12 
13// name=Taylor&order[column]=created_at&order[direction]=desc

Arr::random()

Arr::random 方法從陣列中隨機回傳一個值:

1use Illuminate\Support\Arr;
2 
3$array = [1, 2, 3, 4, 5];
4 
5$random = Arr::random($array);
6 
7// 4 - (retrieved randomly)
1use Illuminate\Support\Arr;
2 
3$array = [1, 2, 3, 4, 5];
4 
5$random = Arr::random($array);
6 
7// 4 - (retrieved randomly)

也可以在第二個引數上指定要回傳項目的數量。請注意,若有提供第二個引數,就算只要求一個項目,還是會回傳一組陣列:

1use Illuminate\Support\Arr;
2 
3$items = Arr::random($array, 2);
4 
5// [2, 5] - (retrieved randomly)
1use Illuminate\Support\Arr;
2 
3$items = Arr::random($array, 2);
4 
5// [2, 5] - (retrieved randomly)

Arr::set()

Arr::set 方法可使用「點 (.)」標記法來在多層巢狀陣列中賦值:

1use Illuminate\Support\Arr;
2 
3$array = ['products' => ['desk' => ['price' => 100]]];
4 
5Arr::set($array, 'products.desk.price', 200);
6 
7// ['products' => ['desk' => ['price' => 200]]]
1use Illuminate\Support\Arr;
2 
3$array = ['products' => ['desk' => ['price' => 100]]];
4 
5Arr::set($array, 'products.desk.price', 200);
6 
7// ['products' => ['desk' => ['price' => 200]]]

Arr::shuffle()

Arr::shuffle 方法會隨機排序該陣列內的項目:

1use Illuminate\Support\Arr;
2 
3$array = Arr::shuffle([1, 2, 3, 4, 5]);
4 
5// [3, 2, 5, 1, 4] - (generated randomly)
1use Illuminate\Support\Arr;
2 
3$array = Arr::shuffle([1, 2, 3, 4, 5]);
4 
5// [3, 2, 5, 1, 4] - (generated randomly)

Arr::sort()

Arr::sort 方法以陣列內的值來排列陣列:

1use Illuminate\Support\Arr;
2 
3$array = ['Desk', 'Table', 'Chair'];
4 
5$sorted = Arr::sort($array);
6 
7// ['Chair', 'Desk', 'Table']
1use Illuminate\Support\Arr;
2 
3$array = ['Desk', 'Table', 'Chair'];
4 
5$sorted = Arr::sort($array);
6 
7// ['Chair', 'Desk', 'Table']

也可以使用給定閉包的執行結果來排序陣列:

1use Illuminate\Support\Arr;
2 
3$array = [
4 ['name' => 'Desk'],
5 ['name' => 'Table'],
6 ['name' => 'Chair'],
7];
8 
9$sorted = array_values(Arr::sort($array, function ($value) {
10 return $value['name'];
11}));
12 
13/*
14 [
15 ['name' => 'Chair'],
16 ['name' => 'Desk'],
17 ['name' => 'Table'],
18 ]
19*/
1use Illuminate\Support\Arr;
2 
3$array = [
4 ['name' => 'Desk'],
5 ['name' => 'Table'],
6 ['name' => 'Chair'],
7];
8 
9$sorted = array_values(Arr::sort($array, function ($value) {
10 return $value['name'];
11}));
12 
13/*
14 [
15 ['name' => 'Chair'],
16 ['name' => 'Desk'],
17 ['name' => 'Table'],
18 ]
19*/

Arr::sortDesc()

Arr::sortDesc 方法將陣列以其值來降冪排序:

1use Illuminate\Support\Arr;
2 
3$array = ['Desk', 'Table', 'Chair'];
4 
5$sorted = Arr::sortDesc($array);
6 
7// ['Table', 'Desk', 'Chair']
1use Illuminate\Support\Arr;
2 
3$array = ['Desk', 'Table', 'Chair'];
4 
5$sorted = Arr::sortDesc($array);
6 
7// ['Table', 'Desk', 'Chair']

也可以使用給定閉包的執行結果來排序陣列:

1use Illuminate\Support\Arr;
2 
3$array = [
4 ['name' => 'Desk'],
5 ['name' => 'Table'],
6 ['name' => 'Chair'],
7];
8 
9$sorted = array_values(Arr::sortDesc($array, function ($value) {
10 return $value['name'];
11}));
12 
13/*
14 [
15 ['name' => 'Table'],
16 ['name' => 'Desk'],
17 ['name' => 'Chair'],
18 ]
19*/
1use Illuminate\Support\Arr;
2 
3$array = [
4 ['name' => 'Desk'],
5 ['name' => 'Table'],
6 ['name' => 'Chair'],
7];
8 
9$sorted = array_values(Arr::sortDesc($array, function ($value) {
10 return $value['name'];
11}));
12 
13/*
14 [
15 ['name' => 'Table'],
16 ['name' => 'Desk'],
17 ['name' => 'Chair'],
18 ]
19*/

Arr::sortRecursive()

Arr::sortRecursive 方法會遞迴排序陣列。當遇到數字索引鍵的子陣列時,會使用 sort 函式;若子陣列為關聯式陣列,則使用 ksort 函式:

1use Illuminate\Support\Arr;
2 
3$array = [
4 ['Roman', 'Taylor', 'Li'],
5 ['PHP', 'Ruby', 'JavaScript'],
6 ['one' => 1, 'two' => 2, 'three' => 3],
7];
8 
9$sorted = Arr::sortRecursive($array);
10 
11/*
12 [
13 ['JavaScript', 'PHP', 'Ruby'],
14 ['one' => 1, 'three' => 3, 'two' => 2],
15 ['Li', 'Roman', 'Taylor'],
16 ]
17*/
1use Illuminate\Support\Arr;
2 
3$array = [
4 ['Roman', 'Taylor', 'Li'],
5 ['PHP', 'Ruby', 'JavaScript'],
6 ['one' => 1, 'two' => 2, 'three' => 3],
7];
8 
9$sorted = Arr::sortRecursive($array);
10 
11/*
12 [
13 ['JavaScript', 'PHP', 'Ruby'],
14 ['one' => 1, 'three' => 3, 'two' => 2],
15 ['Li', 'Roman', 'Taylor'],
16 ]
17*/

Arr::toCssClasses()

Arr::toCssClasses 可以有條件地編譯 CSS class 字串。該方法接受一組包含 class 的陣列,其中,陣列的索引鍵代表欲新增的 class,陣列值則是一個布林運算式。若陣列的元素有數字索引鍵,則該元素一定會被加到轉譯後的 Class 列表上:

1use Illuminate\Support\Arr;
2 
3$isActive = false;
4$hasError = true;
5 
6$array = ['p-4', 'font-bold' => $isActive, 'bg-red' => $hasError];
7 
8$classes = Arr::toCssClasses($array);
9 
10/*
11 'p-4 bg-red'
12*/
1use Illuminate\Support\Arr;
2 
3$isActive = false;
4$hasError = true;
5 
6$array = ['p-4', 'font-bold' => $isActive, 'bg-red' => $hasError];
7 
8$classes = Arr::toCssClasses($array);
9 
10/*
11 'p-4 bg-red'
12*/

該方法用於提供了 Laravel 的「將 Class 於 Blade 元件的 Attribute Bag 合併」功能,以及 @class Blade 指示詞

Arr::undot()

Arr::undot 方法將一組使用「點 (.)」標記法的一維陣列展開為多維陣列:

1use Illuminate\Support\Arr;
2 
3$array = [
4 'user.name' => 'Kevin Malone',
5 'user.occupation' => 'Accountant',
6];
7 
8$array = Arr::undot($array);
9 
10// ['user' => ['name' => 'Kevin Malone', 'occupation' => 'Accountant']]
1use Illuminate\Support\Arr;
2 
3$array = [
4 'user.name' => 'Kevin Malone',
5 'user.occupation' => 'Accountant',
6];
7 
8$array = Arr::undot($array);
9 
10// ['user' => ['name' => 'Kevin Malone', 'occupation' => 'Accountant']]

Arr::where()

Arr::where 方法使用給定的閉包來篩選陣列:

1use Illuminate\Support\Arr;
2 
3$array = [100, '200', 300, '400', 500];
4 
5$filtered = Arr::where($array, function ($value, $key) {
6 return is_string($value);
7});
8 
9// [1 => '200', 3 => '400']
1use Illuminate\Support\Arr;
2 
3$array = [100, '200', 300, '400', 500];
4 
5$filtered = Arr::where($array, function ($value, $key) {
6 return is_string($value);
7});
8 
9// [1 => '200', 3 => '400']

Arr::whereNotNull()

Arr::whereNotNull 方法從給定陣列中移除所有 null 的值:

1use Illuminate\Support\Arr;
2 
3$array = [0, null];
4 
5$filtered = Arr::whereNotNull($array);
6 
7// [0 => 0]
1use Illuminate\Support\Arr;
2 
3$array = [0, null];
4 
5$filtered = Arr::whereNotNull($array);
6 
7// [0 => 0]

Arr::wrap()

Arr::wrap 將給定值包裝(Wrap)為陣列。若給定的值已為陣列,則該方法會直接回傳該陣列,不做其他修改:

1use Illuminate\Support\Arr;
2 
3$string = 'Laravel';
4 
5$array = Arr::wrap($string);
6 
7// ['Laravel']
1use Illuminate\Support\Arr;
2 
3$string = 'Laravel';
4 
5$array = Arr::wrap($string);
6 
7// ['Laravel']

若給定值為 null,則會回傳空陣列:

1use Illuminate\Support\Arr;
2 
3$array = Arr::wrap(null);
4 
5// []
1use Illuminate\Support\Arr;
2 
3$array = Arr::wrap(null);
4 
5// []

data_fill()

data_fill 方法使用「點 (.)」標記法來在巢狀陣列或物件中填上原本不存在的值:

1$data = ['products' => ['desk' => ['price' => 100]]];
2 
3data_fill($data, 'products.desk.price', 200);
4 
5// ['products' => ['desk' => ['price' => 100]]]
6 
7data_fill($data, 'products.desk.discount', 10);
8 
9// ['products' => ['desk' => ['price' => 100, 'discount' => 10]]]
1$data = ['products' => ['desk' => ['price' => 100]]];
2 
3data_fill($data, 'products.desk.price', 200);
4 
5// ['products' => ['desk' => ['price' => 100]]]
6 
7data_fill($data, 'products.desk.discount', 10);
8 
9// ['products' => ['desk' => ['price' => 100, 'discount' => 10]]]

該方法也支援使用星號作為萬用字元,會填上對應的目標:

1$data = [
2 'products' => [
3 ['name' => 'Desk 1', 'price' => 100],
4 ['name' => 'Desk 2'],
5 ],
6];
7 
8data_fill($data, 'products.*.price', 200);
9 
10/*
11 [
12 'products' => [
13 ['name' => 'Desk 1', 'price' => 100],
14 ['name' => 'Desk 2', 'price' => 200],
15 ],
16 ]
17*/
1$data = [
2 'products' => [
3 ['name' => 'Desk 1', 'price' => 100],
4 ['name' => 'Desk 2'],
5 ],
6];
7 
8data_fill($data, 'products.*.price', 200);
9 
10/*
11 [
12 'products' => [
13 ['name' => 'Desk 1', 'price' => 100],
14 ['name' => 'Desk 2', 'price' => 200],
15 ],
16 ]
17*/

data_get()

data_get 方法使用「點 (.)」標記法來從巢狀陣列或物件中取值:

1$data = ['products' => ['desk' => ['price' => 100]]];
2 
3$price = data_get($data, 'products.desk.price');
4 
5// 100
1$data = ['products' => ['desk' => ['price' => 100]]];
2 
3$price = data_get($data, 'products.desk.price');
4 
5// 100

data_get 還接受一個預設值。若找不到指定的索引鍵時會回傳該預設值:

1$discount = data_get($data, 'products.desk.discount', 0);
2 
3// 0
1$discount = data_get($data, 'products.desk.discount', 0);
2 
3// 0

該方法也接受使用星號來作為萬用字元,可以套用到陣列或物件上的任何索引鍵:

1$data = [
2 'product-one' => ['name' => 'Desk 1', 'price' => 100],
3 'product-two' => ['name' => 'Desk 2', 'price' => 150],
4];
5 
6data_get($data, '*.name');
7 
8// ['Desk 1', 'Desk 2'];
1$data = [
2 'product-one' => ['name' => 'Desk 1', 'price' => 100],
3 'product-two' => ['name' => 'Desk 2', 'price' => 150],
4];
5 
6data_get($data, '*.name');
7 
8// ['Desk 1', 'Desk 2'];

data_set()

data_set 函式使用「點 (.)」標記法來在巢狀陣列或物件上賦值:

1$data = ['products' => ['desk' => ['price' => 100]]];
2 
3data_set($data, 'products.desk.price', 200);
4 
5// ['products' => ['desk' => ['price' => 200]]]
1$data = ['products' => ['desk' => ['price' => 100]]];
2 
3data_set($data, 'products.desk.price', 200);
4 
5// ['products' => ['desk' => ['price' => 200]]]

該函式也接受使用星號作為萬用字元,會為設定相應的目標賦值:

1$data = [
2 'products' => [
3 ['name' => 'Desk 1', 'price' => 100],
4 ['name' => 'Desk 2', 'price' => 150],
5 ],
6];
7 
8data_set($data, 'products.*.price', 200);
9 
10/*
11 [
12 'products' => [
13 ['name' => 'Desk 1', 'price' => 200],
14 ['name' => 'Desk 2', 'price' => 200],
15 ],
16 ]
17*/
1$data = [
2 'products' => [
3 ['name' => 'Desk 1', 'price' => 100],
4 ['name' => 'Desk 2', 'price' => 150],
5 ],
6];
7 
8data_set($data, 'products.*.price', 200);
9 
10/*
11 [
12 'products' => [
13 ['name' => 'Desk 1', 'price' => 200],
14 ['name' => 'Desk 2', 'price' => 200],
15 ],
16 ]
17*/

預設情況下,會複寫現有的值。若只想為不存在的項目賦值,可傳入 false 作為第四個引數給該函式:

1$data = ['products' => ['desk' => ['price' => 100]]];
2 
3data_set($data, 'products.desk.price', 200, overwrite: false);
4 
5// ['products' => ['desk' => ['price' => 100]]]
1$data = ['products' => ['desk' => ['price' => 100]]];
2 
3data_set($data, 'products.desk.price', 200, overwrite: false);
4 
5// ['products' => ['desk' => ['price' => 100]]]

head()

head 方法回傳給定陣列中的第一個元素:

1$array = [100, 200, 300];
2 
3$first = head($array);
4 
5// 100
1$array = [100, 200, 300];
2 
3$first = head($array);
4 
5// 100

last()

last 方法回傳給定陣列中的最後一個元素:

1$array = [100, 200, 300];
2 
3$last = last($array);
4 
5// 300
1$array = [100, 200, 300];
2 
3$last = last($array);
4 
5// 300

路徑

app_path()

app_path 回傳專案 app 目錄的完整名稱路徑。也可以使用 app_path 函式來為 app 目錄下相對路徑的完整名稱路徑:

1$path = app_path();
2 
3$path = app_path('Http/Controllers/Controller.php');
1$path = app_path();
2 
3$path = app_path('Http/Controllers/Controller.php');

base_path()

base_path 函式回傳專案根目錄的完整名稱路徑。也可以使用 base_path 來產生相對於根目錄下給定檔案的完整名稱路徑:

1$path = base_path();
2 
3$path = base_path('vendor/bin');
1$path = base_path();
2 
3$path = base_path('vendor/bin');

config_path()

config_path 函式回傳專案 config 目錄的完整名稱路徑。也可以使用 config_path 函式來產生專案 config 目錄內給定檔案的完整名稱路徑:

1$path = config_path();
2 
3$path = config_path('app.php');
1$path = config_path();
2 
3$path = config_path('app.php');

database_path()

database_path 函式回傳專案 database 目錄的完整名稱路徑。也可以使用 database_path 函式來產生 database 目錄下給定檔案的完整名稱路徑:

1$path = database_path();
2 
3$path = database_path('factories/UserFactory.php');
1$path = database_path();
2 
3$path = database_path('factories/UserFactory.php');

lang_path()

lang_path 函式回傳專案 lang 目錄的完整名稱路徑。也可以使用 lang_path 函式來產生 lang 目錄下給定檔案的完整名稱路徑:

1$path = lang_path();
2 
3$path = lang_path('en/messages.php');
1$path = lang_path();
2 
3$path = lang_path('en/messages.php');

mix()

mix 函式回傳版本化的 Mix 檔案路徑:

1$path = mix('css/app.css');
1$path = mix('css/app.css');

public_path()

public_path 函式回傳專案 public 目錄的完整名稱路徑。也可以使用 public_path 函式來產生 public 目錄下給定檔案的完整名稱路徑:

1$path = public_path();
2 
3$path = public_path('css/app.css');
1$path = public_path();
2 
3$path = public_path('css/app.css');

resource_path()

resource_path 函式回傳專案 resources 目錄的完整名稱路徑。也可以使用 resource_path 函式來產生 resources 目錄下給定檔案的完整名稱路徑:

1$path = resource_path();
2 
3$path = resource_path('sass/app.scss');
1$path = resource_path();
2 
3$path = resource_path('sass/app.scss');

storage_path()

storage_path 函式回傳專案 storage 目錄的完整名稱路徑。也可以使用 storage_path 函式來產生 storage 目錄下給定檔案的完整名稱路徑:

1$path = storage_path();
2 
3$path = storage_path('app/file.txt');
1$path = storage_path();
2 
3$path = storage_path('app/file.txt');

字串

__()

__ 函式使用語系檔來翻譯給定的翻譯字串或翻譯索引鍵:

1echo __('Welcome to our application');
2 
3echo __('messages.welcome');
1echo __('Welcome to our application');
2 
3echo __('messages.welcome');

若指定的翻譯字串或翻譯索引鍵不存在時,__ 函式會回傳給定的值。因此,在上述範例中,若 messages.welcome 索引鍵不存在,__ 函式會回傳 messages.welcome

class_basename()

class_basename 函式回傳給定類別在移除類別 Namespace 後的類別名稱:

1$class = class_basename('Foo\Bar\Baz');
2 
3// Baz
1$class = class_basename('Foo\Bar\Baz');
2 
3// Baz

e()

e 函式執行 PHP 的 htmlspecialchars 函式,其中 double_encode 選項預設為 true

1echo e('<html>foo</html>');
2 
3// &lt;html&gt;foo&lt;/html&gt;
1echo e('<html>foo</html>');
2 
3// &lt;html&gt;foo&lt;/html&gt;

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
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'
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'
1use Illuminate\Support\Str;
2 
3$slice = Str::afterLast('App\Http\Controllers\Controller', '\\');
4 
5// 'Controller'

Str::ascii()

Str::ascii 方法會嘗試將給定字串翻譯為 ASCII 值:

1use Illuminate\Support\Str;
2 
3$slice = Str::ascii('û');
4 
5// 'u'
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 '
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 '
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 '
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'
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
1use Illuminate\Support\Str;
2 
3$converted = Str::camel('foo_bar');
4 
5// fooBar

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');
4 
5// true

也可以傳入一組要判斷的陣列值,來判斷給定字串中是否有包含該陣列中任何一個值:

1use Illuminate\Support\Str;
2 
3$contains = Str::contains('This is my name', ['my', 'foo']);
4 
5// true
1use Illuminate\Support\Str;
2 
3$contains = Str::contains('This is my name', ['my', 'foo']);
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
1use Illuminate\Support\Str;
2 
3$containsAll = Str::containsAll('This is my name', ['my', 'name']);
4 
5// 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');
4 
5// true

也可以傳入一組陣列值來判斷給定字串的結尾是否符合該陣列內的其中一項:

1use Illuminate\Support\Str;
2 
3$result = Str::endsWith('This is my name', ['name', 'foo']);
4 
5// true
6 
7$result = Str::endsWith('This is my name', ['this', 'foo']);
8 
9// false
1use Illuminate\Support\Str;
2 
3$result = Str::endsWith('This is my name', ['name', 'foo']);
4 
5// true
6 
7$result = Str::endsWith('This is my name', ['this', 'foo']);
8 
9// false

Str::excerpt()

Str::excerpt 方法從給定字串中截取摘要,這個摘要符合該字串中第一個符合給定片語 (Phrase) 的實體:

1use Illuminate\Support\Str;
2 
3$excerpt = Str::excerpt('This is my name', 'my', [
4 'radius' => 3
5]);
6 
7// '...is my na...'
1use Illuminate\Support\Str;
2 
3$excerpt = Str::excerpt('This is my name', 'my', [
4 'radius' => 3
5]);
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'
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/
1use Illuminate\Support\Str;
2 
3$adjusted = Str::finish('this/string', '/');
4 
5// this/string/
6 
7$adjusted = Str::finish('this/string/', '/');
8 
9// this/string/

Str::headline()

Str::headline 方法將以大小寫、減號、底線等方式區隔的字串轉換為以空格區隔的字串,並將其中每個單詞的首字母都轉為大寫:

1use Illuminate\Support\Str;
2 
3$headline = Str::headline('steve_jobs');
4 
5// Steve Jobs
6 
7$headline = Str::headline('EmailNotificationSent');
8 
9// Email Notification Sent
1use Illuminate\Support\Str;
2 
3$headline = Str::headline('steve_jobs');
4 
5// Steve Jobs
6 
7$headline = Str::headline('EmailNotificationSent');
8 
9// Email Notification Sent

Str::inlineMarkdown()

Str::inlineMarkdown 方法使用 CommonMarkdown 來將 GitHub Flavored Markdown 轉換為內嵌的 HTML。不過,與 markdown 不同,該方法不會將所有產生的 HTML 以區塊層級的元素包裝起來。

1use Illuminate\Support\Str;
2 
3$html = Str::inlineMarkdown('**Laravel**');
4 
5// <strong>Laravel</strong>
1use Illuminate\Support\Str;
2 
3$html = Str::inlineMarkdown('**Laravel**');
4 
5// <strong>Laravel</strong>

Str::is()

Str::is 判斷給定字串是否符合給定的格式。可使用星號作為萬用字元:

1use Illuminate\Support\Str;
2 
3$matches = Str::is('foo*', 'foobar');
4 
5// true
6 
7$matches = Str::is('baz*', 'foobar');
8 
9// false
1use Illuminate\Support\Str;
2 
3$matches = Str::is('foo*', 'foobar');
4 
5// true
6 
7$matches = Str::is('baz*', 'foobar');
8 
9// false

Str::isAscii()

Str::isAscii 方法判斷給定字串是否為 7 位元 ASCII:

1use Illuminate\Support\Str;
2 
3$isAscii = Str::isAscii('Taylor');
4 
5// true
6 
7$isAscii = Str::isAscii('ü');
8 
9// false
1use Illuminate\Support\Str;
2 
3$isAscii = Str::isAscii('Taylor');
4 
5// true
6 
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// true
10 
11$result = Str::isJson('{first: "John", last: "Doe"}');
12 
13// false
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// true
10 
11$result = Str::isJson('{first: "John", last: "Doe"}');
12 
13// false

Str::isUlid()

Str::isUlid 方法可判斷給定字串是否為有效的 ULID:

1use Illuminate\Support\Str;
2 
3$isUlid = Str::isUlid('01gd6r360bp37zj17nxb55yv40');
4 
5// true
6 
7$isUlid = Str::isUlid('laravel');
8 
9// false
1use Illuminate\Support\Str;
2 
3$isUlid = Str::isUlid('01gd6r360bp37zj17nxb55yv40');
4 
5// true
6 
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// true
6 
7$isUuid = Str::isUuid('laravel');
8 
9// false
1use Illuminate\Support\Str;
2 
3$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');
4 
5// true
6 
7$isUuid = Str::isUuid('laravel');
8 
9// false

Str::kebab()

Str::kebab 方法將給定字串轉換為 kebab-case

1use Illuminate\Support\Str;
2 
3$converted = Str::kebab('fooBar');
4 
5// foo-bar
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
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
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...
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...

也可以傳入第三個引數給該方法,以更改當字串被截斷時要加在最後方的內容:

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 (...)
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 (...)

Str::lower()

Str::lower 方法將給定字串轉為小寫:

1use Illuminate\Support\Str;
2 
3$converted = Str::lower('LARAVEL');
4 
5// laravel
1use Illuminate\Support\Str;
2 
3$converted = Str::lower('LARAVEL');
4 
5// laravel

Str::markdown()

Str::markdown 方法使用 CommonMark 來將 GitHub Flavored 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>
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>

Str::mask()

Str::mask 方法將字串中的一部分轉為重複字元,可用來為 E-Mail 位址或電話號碼⋯⋯等字串打碼(Obfuscate)

1use Illuminate\Support\Str;
2 
3$string = Str::mask('[email protected]', '*', 3);
4 
5// tay***************
1use Illuminate\Support\Str;
2 
3$string = Str::mask('[email protected]', '*', 3);
4 
5// tay***************

若有需要,mask 方法的第三個引數可提供負數,這樣 mask 就會從字串結尾起給定的長度開始打碼:

1$string = Str::mask('[email protected]', '*', -15, 3);
2 
3// tay***@example.com
1$string = Str::mask('[email protected]', '*', -15, 3);
2 
3// tay***@example.com

Str::orderedUuid()

Str::orderedUuid 方法會產生一個「時戳優先(Timestamp First)」的 UUID,可用來儲存在有所引的資料庫欄位中。使用本方法產生的 UUID 在排序時會被排到之前使用本方法產生的 UUID 之後:

1use Illuminate\Support\Str;
2 
3return (string) Str::orderedUuid();
1use Illuminate\Support\Str;
2 
3return (string) Str::orderedUuid();

Str::padBoth()

Str::padBoth 方法包裝了 PHP 的 str_path 方法,會填充字串的兩端,直到字串符合預期的長度:

1use Illuminate\Support\Str;
2 
3$padded = Str::padBoth('James', 10, '_');
4 
5// '__James___'
6 
7$padded = Str::padBoth('James', 10);
8 
9// ' James '
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'
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 '
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::plural()

Str::plural 方法將單數單詞轉換為其複數形態。該方法支援所有 Laravel Pluralizer 所支援的語言

1use Illuminate\Support\Str;
2 
3$plural = Str::plural('car');
4 
5// cars
6 
7$plural = Str::plural('child');
8 
9// children
1use Illuminate\Support\Str;
2 
3$plural = Str::plural('car');
4 
5// cars
6 
7$plural = Str::plural('child');
8 
9// children

也可以提供一個整數作為該方法的第二個引數,用來判斷要取得該字串的單數或複數型:

1use Illuminate\Support\Str;
2 
3$plural = Str::plural('child', 2);
4 
5// children
6 
7$singular = Str::plural('child', 1);
8 
9// child
1use Illuminate\Support\Str;
2 
3$plural = Str::plural('child', 2);
4 
5// children
6 
7$singular = Str::plural('child', 1);
8 
9// child

Str::pluralStudly()

Str::plural 方法將單數單詞轉換為其複數形態,並以 Studly 命名法 (StudlyCase) 來格式化字串。該方法支援所有 Laravel Pluralizer 所支援的語言

1use Illuminate\Support\Str;
2 
3$plural = Str::pluralStudly('VerifiedHuman');
4 
5// VerifiedHumans
6 
7$plural = Str::pluralStudly('UserFeedback');
8 
9// UserFeedback
1use Illuminate\Support\Str;
2 
3$plural = Str::pluralStudly('VerifiedHuman');
4 
5// VerifiedHumans
6 
7$plural = Str::pluralStudly('UserFeedback');
8 
9// UserFeedback

也可以提供一個整數作為該方法的第二個引數,用來判斷要取得該字串的單數或複數型:

1use Illuminate\Support\Str;
2 
3$plural = Str::pluralStudly('VerifiedHuman', 2);
4 
5// VerifiedHumans
6 
7$singular = Str::pluralStudly('VerifiedHuman', 1);
8 
9// VerifiedHuman
1use Illuminate\Support\Str;
2 
3$plural = Str::pluralStudly('VerifiedHuman', 2);
4 
5// VerifiedHumans
6 
7$singular = Str::pluralStudly('VerifiedHuman', 1);
8 
9// VerifiedHuman

Str::random()

Str::random 方法產生指定長度的隨機字串。該函式使用 PHP 的 random_bytes 函式:

1use Illuminate\Support\Str;
2 
3$random = Str::random(40);
1use Illuminate\Support\Str;
2 
3$random = Str::random(40);

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.
1use Illuminate\Support\Str;
2 
3$string = 'Peter Piper picked a peck of pickled peppers.';
4 
5$removed = Str::remove('e', $string);
6 
7// Ptr Pipr pickd a pck of pickld ppprs.

也可以傳入 false 作為第三個引數給 remove 方法來在移除字串時忽略大小寫差異:

Str::replace()

Str::replace 方法在字串中取代給定字串:

1use Illuminate\Support\Str;
2 
3$string = 'Laravel 8.x';
4 
5$replaced = Str::replace('8.x', '9.x', $string);
6 
7// Laravel 9.x
1use Illuminate\Support\Str;
2 
3$string = 'Laravel 8.x';
4 
5$replaced = Str::replace('8.x', '9.x', $string);
6 
7// Laravel 9.x

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
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
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
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::reverse()

Str::reverse 方法反轉給定的字串:

1use Illuminate\Support\Str;
2 
3$reversed = Str::reverse('Hello World');
4 
5// dlroW olleH
1use Illuminate\Support\Str;
2 
3$reversed = Str::reverse('Hello World');
4 
5// dlroW olleH

Str::singular()

Str::plural 方法將單詞轉換為其單數形態。該方法支援所有 Laravel Pluralizer 所支援的語言

1use Illuminate\Support\Str;
2 
3$singular = Str::singular('cars');
4 
5// car
6 
7$singular = Str::singular('children');
8 
9// child
1use Illuminate\Support\Str;
2 
3$singular = Str::singular('cars');
4 
5// car
6 
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
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_bar
6 
7$converted = Str::snake('fooBar', '-');
8 
9// foo-bar
1use Illuminate\Support\Str;
2 
3$converted = Str::snake('fooBar');
4 
5// foo_bar
6 
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
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/string
6 
7$adjusted = Str::start('/this/string', '/');
8 
9// /this/string
1use Illuminate\Support\Str;
2 
3$adjusted = Str::start('this/string', '/');
4 
5// /this/string
6 
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
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
1$result = Str::startsWith('This is my name', ['This', 'That', 'There']);
2 
3// true

Str::studly()

Str::studly 方法將給定字串轉為 StudlyCase —— Studly 命名法的大小寫:

1use Illuminate\Support\Str;
2 
3$converted = Str::studly('foo_bar');
4 
5// FooBar
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
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
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
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!
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::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
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::toHtmlString()

Str::toHtmlString 方法將字串實體轉換為 Illuminate\Support\HtmlString 的實體。HtmlString 實體可以在 Blade 樣板中顯示:

1use Illuminate\Support\Str;
2 
3$htmlString = Str::of('Nuno Maduro')->toHtmlString();
1use Illuminate\Support\Str;
2 
3$htmlString = Str::of('Nuno Maduro')->toHtmlString();

Str::ucfirst()

Str::ucfirst 方法回傳給定字串第一個字元轉為大寫後的字串:

1use Illuminate\Support\Str;
2 
3$string = Str::ucfirst('foo bar');
4 
5// Foo bar
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']
1use Illuminate\Support\Str;
2 
3$segments = Str::ucsplit('FooBar');
4 
5// [0 => 'Foo', 1 => 'Bar']

Str::upper()

Str::upper 方法將給定字串轉換為大寫:

1use Illuminate\Support\Str;
2 
3$string = Str::upper('laravel');
4 
5// LARAVEL
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
1use Illuminate\Support\Str;
2 
3return (string) Str::ulid();
4 
5// 01gd6r360bp37zj17nxb55yv40

Str::uuid()

Str::uuid 方法產生 UUID (第 4 版):

1use Illuminate\Support\Str;
2 
3return (string) Str::uuid();
1use Illuminate\Support\Str;
2 
3return (string) Str::uuid();

Str::wordCount()

Str::wordCount 方法回傳該字串中所包含的單詞數:

1use Illuminate\Support\Str;
2 
3Str::wordCount('Hello, world!'); // 2
1use Illuminate\Support\Str;
2 
3Str::wordCount('Hello, world!'); // 2

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 >>>
1use Illuminate\Support\Str;
2 
3return Str::words('Perfectly balanced, as all things should be.', 3, ' >>>');
4 
5// Perfectly balanced, as >>>

str()

str 會回傳給定字串的 Illuminate\Support\Stringable 實體。這個函式與 Str::of 方法等價:

1$string = str('Taylor')->append(' Otwell');
2 
3// 'Taylor Otwell'
1$string = str('Taylor')->append(' Otwell');
2 
3// 'Taylor Otwell'

若沒有提供引數給 str 函式,則 str 會回傳一個 Illuminate\Support\Str 的實體:

1$snake = str()->snake('FooBar');
2 
3// 'foo_bar'
1$snake = str()->snake('FooBar');
2 
3// 'foo_bar'

trans()

trans 函式使用語系檔來翻譯給定的翻譯字串或翻譯索引鍵:

1echo trans('messages.welcome');
1echo trans('messages.welcome');

若指定的翻譯字串或翻譯索引鍵不存在時,trans 函式會回傳給定的值。因此,在上述範例中,若 messages.welcome 索引鍵不存在,trans 函式會回傳 messages.welcome

trans_choice()

trans_choice 函式會翻譯有詞形變化的翻譯索引鍵:

1echo trans_choice('messages.notifications', $unreadCount);
1echo trans_choice('messages.notifications', $unreadCount);

若指定的翻譯字串或翻譯索引鍵不存在時,trans_choice 函式會回傳給定的值。因此,在上述範例中,若 messages.notifications 索引鍵不存在,trans_choice 函式會回傳 messages.welcome

Fluent 字串

Fluent 字串提供處理字串值一個更流暢、物件導向的介面。我們可以串接多個字串操作,得到比起傳統字串操作來說更好閱讀的語法:

after

after 方法回傳字串中給定值以後的所有內容。若該字串中找不到給定值,會回傳整個字串:

1use Illuminate\Support\Str;
2 
3$slice = Str::of('This is my name')->after('This is');
4 
5// ' my name'
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'
1use Illuminate\Support\Str;
2 
3$slice = Str::of('App\Http\Controllers\Controller')->afterLast('\\');
4 
5// 'Controller'

append

append 方法將給定的值加到字串最後面:

1use Illuminate\Support\Str;
2 
3$string = Str::of('Taylor')->append(' Otwell');
4 
5// 'Taylor Otwell'
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'
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')->basename();
4 
5// 'baz'

若有需要,也可以提供要從最後一個元件中移除的「副檔名」:

1use Illuminate\Support\Str;
2 
3$string = Str::of('/foo/bar/baz.jpg')->basename('.jpg');
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 '
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 '
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 '
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'
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
1use Illuminate\Support\Str;
2 
3$converted = Str::of('foo_bar')->camel();
4 
5// fooBar

classBasename

classBasename 方法回傳給定類別在移除類別 Namespace 後的類別名稱:

1use Illuminate\Support\Str;
2 
3$class = Str::of('Foo\Bar\Baz')->classBasename();
4 
5// Baz
1use Illuminate\Support\Str;
2 
3$class = Str::of('Foo\Bar\Baz')->classBasename();
4 
5// Baz

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');
4 
5// true

也可以傳入一組要判斷的陣列值,來判斷給定字串中是否有包含該陣列中任何一個值:

1use Illuminate\Support\Str;
2 
3$contains = Str::of('This is my name')->contains(['my', 'foo']);
4 
5// true
1use Illuminate\Support\Str;
2 
3$contains = Str::of('This is my name')->contains(['my', 'foo']);
4 
5// true

containsAll

containsAll 判斷給定字串是否有包含給定陣列中的所有值:

1use Illuminate\Support\Str;
2 
3$containsAll = Str::of('This is my name')->containsAll(['my', 'name']);
4 
5// true
1use Illuminate\Support\Str;
2 
3$containsAll = Str::of('This is my name')->containsAll(['my', 'name']);
4 
5// true

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();
4 
5// '/foo/bar'

若有需要,也可以指定要去的多少層以上的目錄:

1use Illuminate\Support\Str;
2 
3$string = Str::of('/foo/bar/baz')->dirname(2);
4 
5// '/foo'
1use Illuminate\Support\Str;
2 
3$string = Str::of('/foo/bar/baz')->dirname(2);
4 
5// '/foo'

excerpt

excerpt 方法從給定字串中截取摘要,這個摘要符合該字串中第一個符合給定片語 (Phrase) 的實體:

1use Illuminate\Support\Str;
2 
3$excerpt = Str::of('This is my name')->excerpt('my', [
4 'radius' => 3
5]);
6 
7// '...is my na...'
1use Illuminate\Support\Str;
2 
3$excerpt = Str::of('This is my name')->excerpt('my', [
4 'radius' => 3
5]);
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'
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'

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');
4 
5// true

也可以傳入一組陣列值來判斷給定字串的結尾是否符合該陣列內的其中一項:

1use Illuminate\Support\Str;
2 
3$result = Str::of('This is my name')->endsWith(['name', 'foo']);
4 
5// true
6 
7$result = Str::of('This is my name')->endsWith(['this', 'foo']);
8 
9// false
1use Illuminate\Support\Str;
2 
3$result = Str::of('This is my name')->endsWith(['name', 'foo']);
4 
5// true
6 
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
1use Illuminate\Support\Str;
2 
3$result = Str::of('Laravel')->exactly('Laravel');
4 
5// true

explode

explode 方法以給定的分隔符號來拆分字串,並回傳一個包含分割後所有段落的 Collection:

1use Illuminate\Support\Str;
2 
3$collection = Str::of('foo bar baz')->explode(' ');
4 
5// collect(['foo', 'bar', 'baz'])
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/
1use Illuminate\Support\Str;
2 
3$adjusted = Str::of('this/string')->finish('/');
4 
5// this/string/
6 
7$adjusted = Str::of('this/string/')->finish('/');
8 
9// this/string/

headline

headline 方法將以大小寫、減號、底線等方式區隔的字串轉換為以空格區隔的字串,並將其中每個單詞的首字母都轉為大寫:

1use Illuminate\Support\Str;
2 
3$headline = Str::of('taylor_otwell')->headline();
4 
5// Taylor Otwell
6 
7$headline = Str::of('EmailNotificationSent')->headline();
8 
9// Email Notification Sent
1use Illuminate\Support\Str;
2 
3$headline = Str::of('taylor_otwell')->headline();
4 
5// Taylor Otwell
6 
7$headline = Str::of('EmailNotificationSent')->headline();
8 
9// Email Notification Sent

inlineMarkdown

inlineMarkdown 方法使用 CommonMarkdown 來將 GitHub Flavored Markdown 轉換為內嵌的 HTML。不過,與 markdown 不同,該方法不會將所有產生的 HTML 以區塊層級的元素包裝起來。

1use Illuminate\Support\Str;
2 
3$html = Str::of('**Laravel**')->inlineMarkdown();
4 
5// <strong>Laravel</strong>
1use Illuminate\Support\Str;
2 
3$html = Str::of('**Laravel**')->inlineMarkdown();
4 
5// <strong>Laravel</strong>

is

is 判斷給定字串是否符合給定的格式。可使用星號作為萬用字元:

1use Illuminate\Support\Str;
2 
3$matches = Str::of('foobar')->is('foo*');
4 
5// true
6 
7$matches = Str::of('foobar')->is('baz*');
8 
9// false
1use Illuminate\Support\Str;
2 
3$matches = Str::of('foobar')->is('foo*');
4 
5// true
6 
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// true
6 
7$result = Str::of('ü')->isAscii();
8 
9// false
1use Illuminate\Support\Str;
2 
3$result = Str::of('Taylor')->isAscii();
4 
5// true
6 
7$result = Str::of('ü')->isAscii();
8 
9// false

isEmpty

isEmpty 方法判斷給定字串是否為空:

1use Illuminate\Support\Str;
2 
3$result = Str::of(' ')->trim()->isEmpty();
4 
5// true
6 
7$result = Str::of('Laravel')->trim()->isEmpty();
8 
9// false
1use Illuminate\Support\Str;
2 
3$result = Str::of(' ')->trim()->isEmpty();
4 
5// true
6 
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// false
6 
7$result = Str::of('Laravel')->trim()->isNotEmpty();
8 
9// true
1use Illuminate\Support\Str;
2 
3$result = Str::of(' ')->trim()->isNotEmpty();
4 
5// false
6 
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// true
10 
11$result = Str::of('{first: "John", last: "Doe"}')->isJson();
12 
13// false
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// true
10 
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// true
6 
7$result = Str::of('Taylor')->isUlid();
8 
9// false
1use Illuminate\Support\Str;
2 
3$result = Str::of('01gd6r360bp37zj17nxb55yv40')->isUlid();
4 
5// true
6 
7$result = Str::of('Taylor')->isUlid();
8 
9// false

isUuid

isUuid 方法判斷給定字串是否為有效的 UUID:

1use Illuminate\Support\Str;
2 
3$result = Str::of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c')->isUuid();
4 
5// true
6 
7$result = Str::of('Taylor')->isUuid();
8 
9// false
1use Illuminate\Support\Str;
2 
3$result = Str::of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c')->isUuid();
4 
5// true
6 
7$result = Str::of('Taylor')->isUuid();
8 
9// false

kebab

kebab 方法將給定字串轉換為 kebab-case —— Kebab 命名法的大小寫:

1use Illuminate\Support\Str;
2 
3$converted = Str::of('fooBar')->kebab();
4 
5// foo-bar
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
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
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...
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...

也可以傳入第二個引數,以更改當字串被截斷時要加在最後方的內容:

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 (...)
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 (...)

lower

lower 方法將給定字串轉為小寫:

1use Illuminate\Support\Str;
2 
3$result = Str::of('LARAVEL')->lower();
4 
5// 'laravel'
1use Illuminate\Support\Str;
2 
3$result = Str::of('LARAVEL')->lower();
4 
5// 'laravel'

ltrim

ltrim 方法修剪字串左邊的值:

1use Illuminate\Support\Str;
2 
3$string = Str::of(' Laravel ')->ltrim();
4 
5// 'Laravel '
6 
7$string = Str::of('/Laravel/')->ltrim('/');
8 
9// 'Laravel/'
1use Illuminate\Support\Str;
2 
3$string = Str::of(' Laravel ')->ltrim();
4 
5// 'Laravel '
6 
7$string = Str::of('/Laravel/')->ltrim('/');
8 
9// 'Laravel/'

markdown

markdown 方法可將 GitHub Flavored Markdown 轉位為 HTML:

1use Illuminate\Support\Str;
2 
3$html = Str::of('# Laravel')->markdown();
4 
5// <h1>Laravel</h1>
6 
7$html = Str::of('# Taylor <b>Otwell</b>')->markdown([
8 'html_input' => 'strip',
9]);
10 
11// <h1>Taylor Otwell</h1>
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>

mask

mask 方法將字串中的一部分轉為重複字元,可用來為 E-Mail 位址或電話號碼⋯⋯等字串打碼(Obfuscate)

1use Illuminate\Support\Str;
2 
3$string = Str::of('[email protected]')->mask('*', 3);
4 
5// tay***************
1use Illuminate\Support\Str;
2 
3$string = Str::of('[email protected]')->mask('*', 3);
4 
5// tay***************

若有需要,也可以在 mask 方法的第三個或第四個引數上提供負數。提供負數時,會讓該方法從字串結尾處開始算起的給定距離開始打碼:

1$string = Str::of('[email protected]')->mask('*', -15, 3);
2 
3// tay***@example.com
4 
5$string = Str::of('[email protected]')->mask('*', 4, -4);
6 
7// tayl**********.com
1$string = Str::of('[email protected]')->mask('*', -15, 3);
2 
3// tay***@example.com
4 
5$string = Str::of('[email protected]')->mask('*', 4, -4);
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'
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 方法回傳一組 Collection,其中包含字串中所有符合給定正規表示式格式的部分:

1use Illuminate\Support\Str;
2 
3$result = Str::of('bar foo bar')->matchAll('/bar/');
4 
5// collect(['bar', 'bar'])
1use Illuminate\Support\Str;
2 
3$result = Str::of('bar foo bar')->matchAll('/bar/');
4 
5// collect(['bar', 'bar'])

也可以在正規式中指定分組(Matching Group),Laravel 會回傳一個包含這些分組的 Collection:

1use Illuminate\Support\Str;
2 
3$result = Str::of('bar fun bar fly')->matchAll('/f(\w*)/');
4 
5// collect(['un', 'ly']);
1use Illuminate\Support\Str;
2 
3$result = Str::of('bar fun bar fly')->matchAll('/f(\w*)/');
4 
5// collect(['un', 'ly']);

若未找到相符合的內容,會回傳空 Collection。

newLine

newLine 方法為字串的最後加上一個「EOL (End of Line,行結尾)」字元:

1use Illuminate\Support\Str;
2 
3$padded = Str::of('Laravel')->newLine()->append('Framework');
4 
5// 'Laravel
6// Framework'
1use Illuminate\Support\Str;
2 
3$padded = Str::of('Laravel')->newLine()->append('Framework');
4 
5// 'Laravel
6// Framework'

padBoth

padBoth 方法包裝了 PHP 的 str_path 方法,會填充字串的兩端,直到字串符合預期的長度:

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 '
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'
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 '
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;
2 
3$hash = Str::of('Laravel')->pipe('md5')->prepend('Checksum: ');
4 
5// 'Checksum: a5c95b86291ea299fcbe64458ed12702'
6 
7$closure = Str::of('foo')->pipe(function ($str) {
8 return 'bar';
9});
10 
11// 'bar'
1use Illuminate\Support\Str;
2 
3$hash = Str::of('Laravel')->pipe('md5')->prepend('Checksum: ');
4 
5// 'Checksum: a5c95b86291ea299fcbe64458ed12702'
6 
7$closure = Str::of('foo')->pipe(function ($str) {
8 return 'bar';
9});
10 
11// 'bar'

plural

plural 方法將單數單詞轉換為其複數形態。該方法支援所有 Laravel Pluralizer 所支援的語言

1use Illuminate\Support\Str;
2 
3$plural = Str::of('car')->plural();
4 
5// cars
6 
7$plural = Str::of('child')->plural();
8 
9// children
1use Illuminate\Support\Str;
2 
3$plural = Str::of('car')->plural();
4 
5// cars
6 
7$plural = Str::of('child')->plural();
8 
9// children

也可以提供一個整數作為該方法的第二個引數,用來判斷要取得該字串的單數或複數型:

1use Illuminate\Support\Str;
2 
3$plural = Str::of('child')->plural(2);
4 
5// children
6 
7$plural = Str::of('child')->plural(1);
8 
9// child
1use Illuminate\Support\Str;
2 
3$plural = Str::of('child')->plural(2);
4 
5// children
6 
7$plural = Str::of('child')->plural(1);
8 
9// child

prepend

prepend 方法將給定的值加到字串最後面:

1use Illuminate\Support\Str;
2 
3$string = Str::of('Framework')->prepend('Laravel ');
4 
5// Laravel Framework
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!
1use Illuminate\Support\Str;
2 
3$string = Str::of('Arkansas is quite beautiful!')->remove('quite');
4 
5// Arkansas is beautiful!

也可以傳入 false 作為第二個引數,來在移除字串時忽略大小寫差異:

replace

replace 方法在字串中取代給定字串:

1use Illuminate\Support\Str;
2 
3$replaced = Str::of('Laravel 6.x')->replace('6.x', '7.x');
4 
5// Laravel 7.x
1use Illuminate\Support\Str;
2 
3$replaced = Str::of('Laravel 6.x')->replace('6.x', '7.x');
4 
5// Laravel 7.x

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
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
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
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'
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 ($match) {
4 return '['.$match[0].']';
5});
6 
7// '[1][2][3]'
1use Illuminate\Support\Str;
2 
3$replaced = Str::of('123')->replaceMatches('/\d/', function ($match) {
4 return '['.$match[0].']';
5});
6 
7// '[1][2][3]'

rtrim

rtrim 方法修剪字串右邊的值:

1use Illuminate\Support\Str;
2 
3$string = Str::of(' Laravel ')->rtrim();
4 
5// ' Laravel'
6 
7$string = Str::of('/Laravel/')->rtrim('/');
8 
9// '/Laravel'
1use Illuminate\Support\Str;
2 
3$string = Str::of(' Laravel ')->rtrim();
4 
5// ' Laravel'
6 
7$string = Str::of('/Laravel/')->rtrim('/');
8 
9// '/Laravel'

scan

scan 方法依照給定的格式來講輸入字串解析為 Collection。給定的格式為 sscanf PHP 函式所支援的:

1use Illuminate\Support\Str;
2 
3$collection = Str::of('filename.jpg')->scan('%[^.].%s');
4 
5// collect(['filename', 'jpg'])
1use Illuminate\Support\Str;
2 
3$collection = Str::of('filename.jpg')->scan('%[^.].%s');
4 
5// collect(['filename', 'jpg'])

singular

plural 方法將單詞轉換為其單數形態。該方法支援所有 Laravel Pluralizer 所支援的語言

1use Illuminate\Support\Str;
2 
3$singular = Str::of('cars')->singular();
4 
5// car
6 
7$singular = Str::of('children')->singular();
8 
9// child
1use Illuminate\Support\Str;
2 
3$singular = Str::of('cars')->singular();
4 
5// car
6 
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
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
1use Illuminate\Support\Str;
2 
3$converted = Str::of('fooBar')->snake();
4 
5// foo_bar

split

split 方法使用正規表示式來將字串拆分為 Collection:

1use Illuminate\Support\Str;
2 
3$segments = Str::of('one, two, three')->split('/[\s,]+/');
4 
5// collect(["one", "two", "three"])
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();