__()
__
函数可使用 本地化文件 来翻译指定的字符串或特定的 key
echo __('Welcome to our application'); echo __('messages.welcome');
如果给定翻译的字符串或者 key 不存在, 则 __
会返回你指定的值。所以上述例子中, 如果给定翻译的字符串或者 key 不存在,则 __
函数会返回 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()
{.collection-method}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::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
方法将指定字符串转换为 驼峰式
表示方法:
use Illuminate\Support\Str; $converted = Str::camel('foo_bar'); // fooBar
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
Str::containsAll()
Str::containsAll
方法用于判断指定字符串是否包含指定数组中的所有值:
use Illuminate\Support\Str; $containsAll = Str::containsAll('This is my name', ['my', 'name']); // 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()
{.collection-method}Str::finish
方法将指定的字符串修改为以指定的值结尾的形式:
use Illuminate\Support\Str; $adjusted = Str::finish('this/string', '/'); // this/string/ $adjusted = Str::finish('this/string/', '/'); // this/string/
Str::headline()
{.collection-method}Str::headline
方法会将由大小写、连字符或下划线分隔的字符串转换为空格分隔的字符串,同时保证每个单词的首字母大写:
use Illuminate\Support\Str; $headline = Str::headline('steve_jobs'); // Steve Jobs $headline = Str::headline('邮件通知发送'); // 邮件通知发送
Str::inlineMarkdown()
{.collection-method}Str::inlineMarkdown
方法使用通用标记将 GitHub 风味 Markdown 转换为内联 HTML。然而,与 markdown
方法不同的是,它不会将所有生成的 HTML 都包装在块级元素中:
use Illuminate\Support\Str; $html = Str::inlineMarkdown('**Laravel**'); // <strong>Laravel</strong>
Str::is()
{.collection-method}Str::is
方法用来判断字符串是否与指定模式匹配。星号 *
可用于表示通配符:
use Illuminate\Support\Str; $matches = Str::is('foo*', 'foobar'); // true $matches = Str::is('baz*', 'foobar'); // false
Str::isAscii()
{.collection-method}Str::isAscii
方法用于判断字符串是否是 7 位 ASCII:
use Illuminate\Support\Str; $isAscii = Str::isAscii('Taylor'); // true $isAscii = Str::isAscii('ü'); // false
Str::isJson()
{.collection-method}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::isUlid()
{.collection-method}Str::isUlid
方法用于判断指定字符串是否是有效的 ULID:
use Illuminate\Support\Str; $isUlid = Str::isUlid('01gd6r360bp37zj17nxb55yv40'); // true $isUlid = Str::isUlid('laravel'); // false
Str::isUuid()
{.collection-method}Str::isUuid
方法用于判断指定字符串是否是有效的 UUID:
use Illuminate\Support\Str; $isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de'); // true $isUuid = Str::isUuid('laravel'); // false
Str::kebab()
{.collection-method}Str::kebab
方法将字符串转换为烤串式( kebab-case )
表示方法:
use Illuminate\Support\Str; $converted = Str::kebab('fooBar'); // foo-bar
Str::lcfirst()
{.collection-method}Str::lcfirst
方法返回第一个小写字符的给定字符串:
use Illuminate\Support\Str; $string = Str::lcfirst('Foo Bar'); // foo Bar
Str::length()
{.collection-method}Str::length
方法返回指定字符串的长度:
use Illuminate\Support\Str; $length = Str::length('Laravel'); // 7
Str::limit()
{.collection-method}Str::limit
方法将字符串以指定长度进行截断:
use Illuminate\Support\Str; $truncated = Str::limit('敏捷的棕色狐狸跳过懒惰的狗', 20); // 敏捷的棕色狐狸...
你也可通过第三个参数来改变追加到末尾的字符串:
use Illuminate\Support\Str; $truncated = Str::limit('敏捷的棕色狐狸跳过懒惰的狗', 20, ' (...)'); // 敏捷的棕色狐狸 (...)
Str::lower()
{.collection-method}Str::lower
方法用于将字符串转换为小写:
use Illuminate\Support\Str; $converted = Str::lower('LARAVEL'); // laravel
Str::markdown()
{.collection-method}Str::markdown
方法将 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>
Str::mask()
{.collection-method}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::orderedUuid()
{.collection-method}Str::orderedUuid
方法用于生成一个「时间戳优先」的 UUID ,它可作为数据库索引列的有效值。使用此方法生成的每个 UUID 将排在之前使用该方法生成的 UUID 后面:
use Illuminate\Support\Str; return (string) Str::orderedUuid();
Str::padBoth()
{.collection-method}Str::padBoth
方法包装了 PHP 的 str_pad 方法
,在指定字符串的两侧填充上另一字符串:
use Illuminate\Support\Str; $padded = Str::padBoth('James', 10, '_'); // '__James___' $padded = Str::padBoth('James', 10); // ' James '
Str::padLeft()
{.collection-method}Str::padLeft
方法包装了 PHP 的 str_pad
方法,在指定字符串的左侧填充上另一字符串:
use Illuminate\Support\Str; $padded = Str::padLeft('James', 10, '-='); // '-=-=-James' $padded = Str::padLeft('James', 10); // ' James'
Str::padRight()
{.collection-method}Str::padRight
方法包装了 PHP 的 str_pad
方法,在指定字符串的右侧填充上另一字符串:
use Illuminate\Support\Str; $padded = Str::padRight('James', 10, '-'); // 'James-----' $padded = Str::padRight('James', 10); // 'James '
Str::password()
{.collection-method}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()
{.collection-method}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
Str::pluralStudly()
{.collection-method}Str::pluralStudly
方法将以驼峰格式的单数字符串转化为其复数形式。此方法支持 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::random()
{.collection-method}Str::random
方法用于生成指定长度的随机字符串。这个方法使用了 PHP 的 random_bytes
函数:
use Illuminate\Support\Str; $random = Str::random(40);
Str::remove()
{.collection-method}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::replace()
{.collection-method}Str::replace
方法用于替换字符串中的给定字符串:
use Illuminate\Support\Str; $string = 'Laravel 10.x'; $replaced = Str::replace('9.x', '10.x', $string); // Laravel 10.x
Str::replaceArray()
{.collection-method}Str::replaceArray
方法使用数组有序的替换字符串中的特定字符:
use Illuminate\Support\Str; $string = '该活动将在 ? 至 ? 举行'; $replaced = Str::replaceArray('?', ['8:30', '9:00'], $string); // 该活动将在 8:30 至 9:00 举行
Str::replaceFirst()
{.collection-method}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()
{.collection-method}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::reverse()
{.collection-method}Str::reverse
方法用于反转给定的字符串:
use Illuminate\Support\Str; $reversed = Str::reverse('Hello World'); // dlroW olleH
Str::singular()
{.collection-method}Str::singular
方法将字符串转换为单数形式。此方法支持 Laravel 复数形式所支持的任何语言:
use Illuminate\Support\Str; $singular = Str::singular('cars'); // car $singular = Str::singular('children'); // child
Str::slug()
{.collection-method}Str::slug
方法将给定的字符串生成一个 URL 友好的「slug」:
use Illuminate\Support\Str; $slug = Str::slug('Laravel 10 Framework', '-'); // laravel-10-framework
Str::snake()
{.collection-method}Str::snake
方法是将驼峰的函数名或者字符串转换成 _
命名的函数或者字符串,例如 snakeCase
转换成 snake_case
:
use Illuminate\Support\Str; $converted = Str::snake('fooBar'); // foo_bar $converted = Str::snake('fooBar', '-'); // foo-bar
Str::squish()
{.collection-method}Str::squish
方法删除字符串中所有多余的空白,包括单词之间多余的空白:
use Illuminate\Support\Str; $string = Str::squish(' laravel framework '); // laravel framework
Str::start()
{.collection-method}Str::start
方法是将给定的值添加到字符串的开始位置,例如:
use Illuminate\Support\Str; $adjusted = Str::start('this/string', '/'); // /this/string $adjusted = Str::start('/this/string', '/'); // /this/string
Str::startsWith()
{.collection-method}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()
{.collection-method}Str::studly
方法将给定的字符串转换为驼峰命名
的字符串:
use Illuminate\Support\Str; $converted = Str::studly('foo_bar'); // FooBar
Str::substr()
{.collection-method}Str::substr
方法返回由 start 和 length 参数指定的字符串部分:
use Illuminate\Support\Str; $converted = Str::substr('The Laravel Framework', 4, 7); // Laravel
Str::substrCount()
{.collection-method}Str::substrCount
方法返回给定字符串中给定值的出现次数:
use Illuminate\Support\Str; $count = Str::substrCount('If you like ice cream, you will like snow cones.', 'like'); // 2
Str::substrReplace()
{.collection-method}Str::substrReplace
方法替换字符串一部分中的文本,从第三个参数指定的位置开始,替换第四个参数指定的字符数。 当「0」传递给方法的第四个参数将在指定位置插入字符串,而不是替换字符串中的任何现有字符:
use Illuminate\Support\Str; $result = Str::substrReplace('1300', ':', 2); // 13: $result = Str::substrReplace('1300', ':', 2, 0); // 13:00
Str::swap()
{.collection-method}Str::swap
方法使用 PHP 的 strtr
函数替换给定字符串中的多个值:
use Illuminate\Support\Str; $string = Str::swap([ 'Tacos' => 'Burritos', 'great' => 'fantastic', ], 'Tacos are great!'); // Burritos are fantastic!
Str::title()
{.collection-method}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::toHtmlString()
{.collection-method}Str::toHtmlString
方法将字符串实例转换为 Illuminate\Support\HtmlString
的实例,它可以显示在 Blade 模板中:
use Illuminate\Support\Str; $htmlString = Str::of('Nuno Maduro')->toHtmlString();
Str::ucfirst()
{.collection-method}Str::ucfirst
方法返回第一个字符大写的给定字符串:
use Illuminate\Support\Str; $string = Str::ucfirst('foo bar'); // Foo bar
Str::ucsplit()
{.collection-method}Str::ucsplit
方法将给定的字符串按大写字符拆分为数组:
use Illuminate\Support\Str; $segments = Str::ucsplit('FooBar'); // [0 => 'Foo', 1 => 'Bar']
Str::upper()
{.collection-method}Str::upper
方法将给定的字符串转换为大写:
use Illuminate\Support\Str; $string = Str::upper('laravel'); // LARAVEL
Str::ulid()
{.collection-method}Str::ulid
方法生成一个 ULID:
use Illuminate\Support\Str; return (string) Str::ulid(); // 01gd6r360bp37zj17nxb55yv40
Str::uuid()
{.collection-method}Str::uuid
方法生成一个 UUID(版本 4):
use Illuminate\Support\Str; return (string) Str::uuid();
Str::wordCount()
{.collection-method}Str::wordCount
方法返回字符串包含的单词数
use Illuminate\Support\Str; Str::wordCount('Hello, world!'); // 2
Str::words()
{.collection-method}Str::words
方法限制字符串中的单词数。 可以通过其第三个参数将附加字符串传递给此方法,以指定应将这个字符串附加到截断后的字符串末尾:
use Illuminate\Support\Str; return Str::words('Perfectly balanced, as all things should be.', 3, ' >>>'); // Perfectly balanced, as >>>
str()
{.collection-method}str
函数返回给定字符串的新 Illuminate\Support\Stringable
实例。 此函数等效于 Str::of
方法:
$string = str('Taylor')->append(' Otwell'); // 'Taylor Otwell'
如果没有为 str
函数提供参数,该函数将返回 Illuminate\Support\Str
的实例:
$snake = str()->snake('FooBar'); // 'foo_bar'
trans()
{.collection-method}trans
函数使用你的 语言文件 翻译给定的翻译键:
echo trans('messages.welcome');
如果指定的翻译键不存在,trans
函数将返回给定的键。 因此,使用上面的示例,如果翻译键不存在,trans
函数将返回 messages.welcome
。
trans_choice()
{.collection-method}trans_choice
函数用词形变化翻译给定的翻译键:
echo trans_choice('messages.notifications', $unreadCount);
如果指定的翻译键不存在,trans_choice
函数将返回给定的键。 因此,使用上面的示例,如果翻译键不存在,trans_choice
函数将返回 messages.notifications
。
Fluent strings 提供了一个更流畅的、面向对象的接口来处理字符串值,与传统的字符串操作相比,允许你使用更易读的语法将多个字符串操作链接在一起。
after
{.collection-method}after
方法返回字符串中给定值之后的所有内容。 如果字符串中不存在该值,则将返回整个字符串:
use Illuminate\Support\Str; $slice = Str::of('This is my name')->after('This is'); // ' my name'
afterLast
{.collection-method}afterLast
方法返回字符串中最后一次出现给定值之后的所有内容。 如果字符串中不存在该值,则将返回整个字符串
use Illuminate\Support\Str; $slice = Str::of('App\Http\Controllers\Controller')->afterLast('\\'); // 'Controller'
append
{.collection-method}append
方法将给定的值附加到字符串:
use Illuminate\Support\Str; $string = Str::of('Taylor')->append(' Otwell'); // 'Taylor Otwell'
ascii
{.collection-method}ascii
方法将尝试将字符串音译为 ASCII 值:
use Illuminate\Support\Str; $string = Str::of('ü')->ascii(); // 'u'
basename
{.collection-method}basename
方法将返回给定字符串的结尾名称部分:
use Illuminate\Support\Str; $string = Str::of('/foo/bar/baz')->basename(); // 'baz'
如果需要,你可以提供将从尾随组件中删除的「扩展名」:
use Illuminate\Support\Str; $string = Str::of('/foo/bar/baz.jpg')->basename('.jpg'); // 'baz'
before
{.collection-method}before
方法返回字符串中给定值之前的所有内容:
use Illuminate\Support\Str; $slice = Str::of('This is my name')->before('my name'); // 'This is '
beforeLast
{.collection-method}beforeLast
方法返回字符串中最后一次出现给定值之前的所有内容:
use Illuminate\Support\Str; $slice = Str::of('This is my name')->beforeLast('is'); // 'This '
between
{.collection-method}between
方法返回两个值之间的字符串部分:
use Illuminate\Support\Str; $converted = Str::of('This is my name')->between('This', 'name'); // ' is my '
betweenFirst
{.collection-method}betweenFirst
方法返回两个值之间字符串的最小可能部分:
use Illuminate\Support\Str; $converted = Str::of('[a] bc [d]')->betweenFirst('[', ']'); // 'a'
camel
{.collection-method}camel
方法将给定的字符串转换为 camelCase
:
use Illuminate\Support\Str; $converted = Str::of('foo_bar')->camel(); // fooBar
classBasename
{.collection-method}classBasename
方法返回给定类的类名,删除了类的命名空间:
use Illuminate\Support\Str; $class = Str::of('Foo\Bar\Baz')->classBasename(); // Baz
contains
{.collection-method}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
containsAll
{.collection-method}containsAll
方法确定给定字符串是否包含给定数组中的所有值:
use Illuminate\Support\Str; $containsAll = Str::of('This is my name')->containsAll(['my', 'name']); // true
dirname
{.collection-method}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'
excerpt
{.collection-method}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'
endsWith
{.collection-method}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
{.collection-method}exactly
方法确定给定的字符串是否与另一个字符串完全匹配:
use Illuminate\Support\Str; $result = Str::of('Laravel')->exactly('Laravel'); // true
explode
{.collection-method}explode
方法按给定的分隔符拆分字符串并返回包含拆分字符串的每个部分的集合:
use Illuminate\Support\Str; $collection = Str::of('foo bar baz')->explode(' '); // collect(['foo', 'bar', 'baz'])
finish
{.collection-method}finish
方法将给定值的单个实例添加到字符串中(如果它尚未以该值结尾):
use Illuminate\Support\Str;
$adjusted = Str::of('this/string')->finish('/'); // this/string/ $adjusted = Str::of('this/string/')->finish('/'); // this/string/
headline
{.collection-method}headline
方法会将由大小写、连字符或下划线分隔的字符串转换为空格分隔的字符串,每个单词的首字母大写:
use Illuminate\Support\Str; $headline = Str::of('taylor_otwell')->headline(); // Taylor Otwell $headline = Str::of('EmailNotificationSent')->headline(); // Email Notification Sent
inlineMarkdown
{.collection-method}inlineMarkdown
方法使用 CommonMark 将 GitHub 风格的 Markdown 转换为内联 HTML。 但是,与 markdown
方法不同,它不会将所有生成的 HTML 包装在块级元素中:
use Illuminate\Support\Str; $html = Str::of('**Laravel**')->inlineMarkdown(); // <strong>Laravel</strong>
is
{.collection-method}is
方法确定给定字符串是否与给定模式匹配。 星号可用作通配符值
use Illuminate\Support\Str; $matches = Str::of('foobar')->is('foo*'); // true $matches = Str::of('foobar')->is('baz*'); // false
isAscii
{.collection-method}isAscii
方法确定给定字符串是否为 ASCII 字符串:
use Illuminate\Support\Str; $result = Str::of('Taylor')->isAscii(); // true $result = Str::of('ü')->isAscii(); // false
isEmpty
{.collection-method}isEmpty
方法确定给定的字符串是否为空:
use Illuminate\Support\Str; $result = Str::of(' ')->trim()->isEmpty(); // true $result = Str::of('Laravel')->trim()->isEmpty(); // false
isNotEmpty
{.collection-method}isNotEmpty
方法确定给定的字符串是否不为空:
use Illuminate\Support\Str; $result = Str::of(' ')->trim()->isNotEmpty(); // false $result = Str::of('Laravel')->trim()->isNotEmpty(); // true
isJson
{.collection-method}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
{.collection-method}isUlid
方法确定给定的字符串是否一个 ULID:
use Illuminate\Support\Str; $result = Str::of('01gd6r360bp37zj17nxb55yv40')->isUlid(); // true $result = Str::of('Taylor')->isUlid(); // false
isUuid
{.collection-method}isUuid
方法确定给定的字符串是否是一个 UUID:
use Illuminate\Support\Str; $result = Str::of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c')->isUuid(); // true $result = Str::of('Taylor')->isUuid(); // false
kebab
{.collection-method}kebab
方法转变给定的字符串为 kebab-case
:
use Illuminate\Support\Str; $converted = Str::of('fooBar')->kebab(); // foo-bar
lcfirst
{.collection-method}lcfirst
方法返回给定的字符串的第一个字符为小写字母:
use Illuminate\Support\Str; $string = Str::of('Foo Bar')->lcfirst(); // foo Bar
length
{.collection-method}length
方法返回给定字符串的长度:
use Illuminate\Support\Str; $length = Str::of('Laravel')->length(); // 7
limit
{.collection-method}limit
方法将给定的字符串截断为指定的长度:
use Illuminate\Support\Str; $truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20); // The quick brown fox...
你也可以通过第二个参数来改变追加到末尾的字符串:
use Illuminate\Support\Str; $truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20, ' (...)'); // The quick brown fox (...)
lower
lower
方法将指定字符串转换为小写:
use Illuminate\Support\Str; $result = Str::of('LARAVEL')->lower(); // 'laravel'
ltrim
ltrim
方法移除字符串左端指定的字符:
use Illuminate\Support\Str; $string = Str::of(' Laravel ')->ltrim(); // 'Laravel ' $string = Str::of('/Laravel/')->ltrim('/'); // 'Laravel/'
markdown
{.collection-method}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>
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'])
如果你在正则表达式中指定了一个匹配组, Laravel 将会返回与该组匹配的集合:
use Illuminate\Support\Str; $result = Str::of('bar fun bar fly')->matchAll('/f(\w*)/'); // collect(['un', 'ly']);
如果没有找到任何匹配项,则返回空集合。
isMatch
isMatch
方法用于判断给定的字符串是否与正则表达式匹配:
use Illuminate\Support\Str; $result = Str::of('foo bar')->isMatch('/foo (.*)/'); // true $result = Str::of('laravel')->match('/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
The 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
方法将把字符串的当前值传递给指定的函数来转换字符串:
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
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
作为第二个参数以在删除字符串时忽略大小写。
replace
replace
方法用于将字符串中的指定字符串替换为另一指定字符串:
use Illuminate\Support\Str; $replaced = Str::of('Laravel 9.x')->replace('9.x', '10.x'); // Laravel 10.x
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; use Illuminate\Support\Stringable; $replaced = Str::of('123')->replaceMatches('/\d/', function (Stringable $match) { return '['.$match[0].']'; }); // '[1][2][3]'
rtrim
rtrim
方法修剪给定字符串的右侧:
use Illuminate\Support\Str; $string = Str::of(' Laravel ')->rtrim(); // ' Laravel' $string = Str::of('/Laravel/')->rtrim('/'); // '/Laravel'
scan
scan
方法根据 PHP 函数 sscanf 支持的格式把字符串中的输入解析为集合:
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
{.collection-method}slug
方法从给定字符串生成 URL 友好的 “slug”:
use Illuminate\Support\Str; $slug = Str::of('Laravel Framework')->slug('-'); // laravel-framework
snake
{.collection-method}snake
方法将给定字符串转换为 snake_case
use Illuminate\Support\Str; $converted = Str::of('fooBar')->snake(); // foo_bar
split
{.collection-method}split 方法使用正则表达式将字符串拆分为集合:
use Illuminate\Support\Str; $segments = Str::of('one, two, three')->split('/[\s,]+/'); // collect(["one", "two", "three"])
squish
{.collection-method}squish
方法删除字符串中所有无关紧要的空白,包括字符串之间的空白:
use Illuminate\Support\Str; $string = Str::of(' laravel framework ')->squish(); // laravel framework
start
{.collection-method}start
方法将给定值的单个实例添加到字符串中,前提是该字符串尚未以该值开头:
use Illuminate\Support\Str; $adjusted = Str::of('this/string')->start('/'); // /this/string $adjusted = Str::of('/this/string')->start('/'); // /this/string
startsWith
{.collection-method}startsWith
方法确定给定字符串是否以给定值开头:
use Illuminate\Support\Str; $result = Str::of('This is my name')->startsWith('This'); // true
studly
{.collection-method}studly
方法将给定字符串转换为 StudlyCase
:
use Illuminate\Support\Str; $converted = Str::of('foo_bar')->studly(); // FooBar
substr
{.collection-method}substr
方法返回由给定的起始参数和长度参数指定的字符串部分:
use Illuminate\Support\Str; $string = Str::of('Laravel Framework')->substr(8); // Framework $string = Str::of('Laravel Framework')->substr(8, 5); // Frame
substrReplace
{.collection-method}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
{.collection-method}swap
方法使用 PHP 的 strtr
函数替换字符串中的多个值:
use Illuminate\Support\Str; $string = Str::of('Tacos are great!') ->swap([ 'Tacos' => 'Burritos', 'great' => 'fantastic', ]); // Burritos are fantastic!
tap
{.collection-method}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
{.collection-method}test
方法确定字符串是否与给定的正则表达式模式匹配:
use Illuminate\Support\Str; $result = Str::of('Laravel Framework')->test('/Laravel/'); // true
title
{.collection-method}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
trim
{.collection-method}trim
方法修剪给定字符串:
use Illuminate\Support\Str; $string = Str::of(' Laravel ')->trim(); // 'Laravel' $string = Str::of('/Laravel/')->trim('/'); // 'Laravel'
ucfirst
{.collection-method}ucfirst
方法返回第一个字符大写的给定字符串
use Illuminate\Support\Str; $string = Str::of('foo bar')->ucfirst(); // Foo bar
ucsplit
{.collection-method}ucsplit
方法将给定的字符串按大写字符分割为一个集合:
use Illuminate\Support\Str; $string = Str::of('Foo Bar')->ucsplit(); // collect(['Foo', 'Bar'])
upper
{.collection-method}upper
方法将给定字符串转换为大写:
use Illuminate\Support\Str; $adjusted = Str::of('laravel')->upper(); // LARAVEL
when
{.collection-method}如果给定的条件为 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
{.collection-method}whenContains
方法会在字符串包含给定的值的前提下,调用给定的闭包。闭包将接收字符流处理实例:
use Illuminate\Support\Str; use Illuminate\Support\Stringable; $string = Str::of('tony stark') ->whenContains('tony', function (Stringable $string) { return $string->title(); }); // 'Tony Stark'
如有必要,你可以将另一个闭包作为第三个参数传递给 whenContains
方法。如果字符串不包含给定值,则此闭包将执行。
你还可以传递一个值数组来确定给定的字符串是否包含数组中的任何值:
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
{.collection-method}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'
如有必要,你可以将另一个闭包作为第三个参数传递给 whenContainsAll
方法。如果条件参数评估为 false
,则此闭包将执行。
whenEmpty
{.collection-method}如果字符串为空,whenEmpty
方法将调用给定的闭包。如果闭包返回一个值,whenEmpty
方法也将返回该值。如果闭包不返回值,则将返回字符流处理实例:
use Illuminate\Support\Str; use Illuminate\Support\Stringable; $string = Str::of(' ')->whenEmpty(function (Stringable $string) { return $string->trim()->prepend('Laravel'); }); // 'Laravel'
whenNotEmpty
{.collection-method}如果字符串不为空,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
{.collection-method}如果字符串以给定的子字符串开头,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
{.collection-method}如果字符串以给定的子字符串结尾,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
{.collection-method}如果字符串与给定字符串完全匹配,whenExactly
方法会调用给定的闭包。闭包将接收字符流处理实例:
use Illuminate\Support\Str; use Illuminate\Support\Stringable; $string = Str::of('laravel')->whenExactly('laravel', function (Stringable $string) { return $string->title(); }); // 'Laravel'
whenNotExactly
{.collection-method}如果字符串与给定字符串不完全匹配,whenNotExactly
方法将调用给定的闭包。闭包将接收字符流处理实例:
use Illuminate\Support\Str; use Illuminate\Support\Stringable; $string = Str::of('framework')->whenNotExactly('laravel', function (Stringable $string) { return $string->title(); }); // 'Framework'
whenIs
{.collection-method}如果字符串匹配给定的模式,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
{.collection-method}如果字符串是 7 位 ASCII,whenIsAscii
方法会调用给定的闭包。闭包将接收字符流处理实例:
use Illuminate\Support\Str; use Illuminate\Support\Stringable; $string = Str::of('laravel')->whenIsAscii(function (Stringable $string) { return $string->title(); }); // 'Laravel'
whenIsUlid
{.collection-method}如果字符串是有效的 ULID,whenIsUlid
方法会调用给定的闭包。闭包将接收字符流处理实例:
use Illuminate\Support\Str; $string = Str::of('01gd6r360bp37zj17nxb55yv40')->whenIsUlid(function (Stringable $string) { return $string->substr(0, 8); }); // '01gd6r36'
whenIsUuid
{.collection-method}如果字符串是有效的 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
{.collection-method}如果字符串匹配给定的正则表达式,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
{.collection-method}wordCount
方法返回字符串包含的单词数:
use Illuminate\Support\Str; Str::of('Hello, world!')->wordCount(); // 2
words
{.collection-method}words
方法限制字符串中的字数。如有必要,可以指定附加到截断字符串的附加字符串:
use Illuminate\Support\Str; $string = Str::of('Perfectly balanced, as all things should be.')->words(3, ' >>>'); // Perfectly balanced, as >>>