Laravel 包含各种用于操作字符串值的函数。其中许多函数都被框架自身使用;但是,如果你觉得方便,你也可以在自己的应用程序中自由使用它们。
\__
class_basename
e
preg_replace_array
Str::after
Str::afterLast
Str::apa
Str::ascii
Str::before
Str::beforeLast
Str::between
Str::betweenFirst
Str::camel
Str::charAt
Str::chopStart
Str::chopEnd
Str::contains
Str::containsAll
Str::doesntContain
Str::doesntEndWith
Str::doesntStartWith
Str::deduplicate
Str::endsWith
Str::excerpt
Str::finish
Str::fromBase64
Str::headline
Str::inlineMarkdown
Str::is
Str::isAscii
Str::isJson
Str::isUlid
Str::isUrl
Str::isUuid
Str::kebab
Str::lcfirst
Str::length
Str::limit
Str::lower
Str::markdown
Str::mask
Str::match
Str::matchAll
Str::orderedUuid
Str::padBoth
Str::padLeft
Str::padRight
Str::password
Str::plural
Str::pluralStudly
Str::position
Str::random
Str::remove
Str::repeat
Str::replace
Str::replaceArray
Str::replaceFirst
Str::replaceLast
Str::replaceMatches
Str::replaceStart
Str::replaceEnd
Str::reverse
Str::singular
Str::slug
Str::snake
Str::squish
Str::start
Str::startsWith
Str::studly
Str::substr
Str::substrCount
Str::substrReplace
Str::swap
Str::take
Str::title
Str::toBase64
Str::transliterate
Str::trim
Str::ltrim
Str::rtrim
Str::ucfirst
Str::ucsplit
Str::ucwords
Str::upper
Str::ulid
Str::unwrap
Str::uuid
Str::uuid7
Str::wordCount
Str::wordWrap
Str::words
Str::wrap
str
trans
trans_choice
after
afterLast
apa
append
ascii
basename
before
beforeLast
between
betweenFirst
camel
charAt
classBasename
chopStart
chopEnd
contains
containsAll
decrypt
deduplicate
dirname
doesntContain
doesntEndWith
doesntStartWith
encrypt
endsWith
exactly
excerpt
explode
finish
fromBase64
hash
headline
inlineMarkdown
is
isAscii
isEmpty
isNotEmpty
isJson
isUlid
isUrl
isUuid
kebab
lcfirst
length
limit
lower
markdown
mask
match
matchAll
isMatch
newLine
padBoth
padLeft
padRight
pipe
plural
position
prepend
remove
repeat
replace
replaceArray
replaceFirst
replaceLast
replaceMatches
replaceStart
replaceEnd
scan
singular
slug
snake
split
squish
start
startsWith
stripTags
studly
substr
substrReplace
swap
take
tap
test
title
toBase64
toHtmlString
toUri
transliterate
trim
ltrim
rtrim
ucfirst
ucsplit
ucwords
unwrap
upper
when
whenContains
whenContainsAll
whenDoesntEndWith
whenDoesntStartWith
whenEmpty
whenNotEmpty
whenStartsWith
whenEndsWith
whenExactly
whenNotExactly
whenIs
whenIsAscii
whenIsUlid
whenIsUuid
whenTest
wordCount
words
wrap
__()__ 函数使用您的 语言文件 翻译给定的翻译字符串或翻译键:
echo __('Welcome to our application');
echo __('messages.welcome');如果指定的翻译字符串或键不存在,__ 函数将返回给定值。因此,使用上面的例子,如果该翻译键不存在,__ 函数将返回 messages.welcome。
class_basename()class_basename 函数返回给定类的类名,并移除其命名空间:
$class = class_basename('Foo\Bar\Baz');
// Baze()该e函数运行 PHP 的htmlspecialchars函数并将double_encode选项设置为true默认情况下:
echo e('<html>foo</html>');
// <html>foo</html>preg_replace_array()函数 preg_replace_array 使用一个数组按顺序替换字符串中的给定模式:
$string = 'The event will take place between :start and :end';
$replaced = preg_replace_array('/:[a-z_]+/', ['8:30', '9:00'], $string);
// The event will take place between 8:30 and 9:00该 Str::after 方法返回字符串中给定值之后的所有内容。如果该值在字符串中不存在,则返回整个字符串:
use Illuminate\Support\Str;
$slice = Str::after('This is my name', 'This is');
// ' my name'Str::afterLast()Str::afterLast 方法返回字符串中给定值最后一次出现之后的所有内容。如果该值在字符串中不存在,则返回整个字符串:
use Illuminate\Support\Str;
$slice = Str::afterLast('App\Http\Controllers\Controller', '\\');
// 'Controller'Str::apa()Str::apa 方法将给定字符串转换为标题大小写 遵循 APA 准则:
use Illuminate\Support\Str;
$title = Str::apa('Creating A Project');
// 'Creating a Project'Str::ascii()该 Str::ascii 方法将尝试将字符串转写为 ASCII 值:
use Illuminate\Support\Str;
$slice = Str::ascii('û');
// 'u'Str::before()Str::before 方法返回字符串中给定值之前的所有内容:
use Illuminate\Support\Str;
$slice = Str::before('This is my name', 'my name');
// 'This is 'Str::beforeLast()Str::beforeLast 方法返回给定值在字符串中最后一次出现之前的所有内容:
use Illuminate\Support\Str;
$slice = Str::beforeLast('This is my name', 'is');
// 'This 'Str::between()Str::between 方法返回一个字符串在两个值之间的部分:
use Illuminate\Support\Str;
$slice = Str::between('This is my name', 'This', 'name');
// ' is my 'Str::betweenFirst()Str::betweenFirst 方法返回字符串中位于两个值之间可能的最短部分:
use Illuminate\Support\Str;
$slice = Str::betweenFirst('[a] bc [d]', '[', ']');
// 'a'Str::camel()Str::camel 方法将给定的字符串转换为 camelCase 格式:
use Illuminate\Support\Str;
$converted = Str::camel('foo_bar');
// 'fooBar'Str::charAt()此 Str::charAt 方法返回指定索引处的字符。如果索引超出范围,则返回 false:
use Illuminate\Support\Str;
$character = Str::charAt('This is my name.', 6);
// 's'Str::chopStart()Str::chopStart 方法仅在给定值出现在字符串开头时,才移除给定值的第一次出现:
use Illuminate\Support\Str;
$url = Str::chopStart('https://laravel.com', 'https://');
// 'laravel.com'您也可以传递一个数组作为第二个参数。如果字符串以数组中的任何值开头,那么该值将从字符串中移除:
use Illuminate\Support\Str;
$url = Str::chopStart('http://laravel.com', ['https://', 'http://']);
// 'laravel.com'Str::chopEnd()Str::chopEnd 方法移除给定值的最后一次出现,但仅当该值出现在字符串的末尾时才移除:
use Illuminate\Support\Str;
$url = Str::chopEnd('app/Models/Photograph.php', '.php');
// 'app/Models/Photograph'您也可以将一个数组作为第二个参数传入。如果字符串以数组中的任何值结尾,则该值将从字符串中移除:
use Illuminate\Support\Str;
$url = Str::chopEnd('laravel.com/index.php', ['/index.html', '/index.php']);
// 'laravel.com'Str::contains()Str::contains 方法判断给定字符串是否包含给定值。默认情况下,此方法区分大小写:
use Illuminate\Support\Str;
$contains = Str::contains('This is my name', 'my');
// true您也可以传入一个值数组,以判断给定字符串是否包含数组中的任何值:
use Illuminate\Support\Str;
$contains = Str::contains('This is my name', ['my', 'foo']);
// true您可以禁用大小写敏感,方法是将 ignoreCase 参数设置为 true:
use Illuminate\Support\Str;
$contains = Str::contains('This is my name', 'MY', ignoreCase: true);
// trueStr::containsAll()该 Str::containsAll 方法确定给定字符串是否包含给定数组中的所有值:
use Illuminate\Support\Str;
$containsAll = Str::containsAll('This is my name', ['my', 'name']);
// true你可以通过将 ignoreCase 参数设置为 true 来禁用大小写敏感性:
use Illuminate\Support\Str;
$containsAll = Str::containsAll('This is my name', ['MY', 'NAME'], ignoreCase: true);
// trueStr::doesntContain()Str::doesntContain 方法判断给定字符串是否不包含给定值。默认情况下,此方法区分大小写:
use Illuminate\Support\Str;
$doesntContain = Str::doesntContain('This is name', 'my');
// true您也可以传入一个值数组,来判断给定字符串是否不包含数组中的任何值:
use Illuminate\Support\Str;
$doesntContain = Str::doesntContain('This is name', ['my', 'framework']);
// true您可以通过将 ignoreCase 参数设置为 true 来禁用大小写敏感性:
use Illuminate\Support\Str;
$doesntContain = Str::doesntContain('This is name', 'MY', ignoreCase: true);
// trueStr::去重()该 Str::deduplicate 方法将给定字符串中连续出现的某个字符替换为该字符的单一实例。默认情况下,该方法会去除重复空格:
use Illuminate\Support\Str;
$result = Str::deduplicate('The Laravel Framework');
// The Laravel Framework您可以指定一个不同的字符,通过将其作为第二个参数传递给该方法来去重:
use Illuminate\Support\Str;
$result = Str::deduplicate('The---Laravel---Framework', '-');
// The-Laravel-FrameworkStr::doesntEndWith()Str::doesntEndWith 方法用于判断给定字符串是否不以给定值结尾:`
use Illuminate\Support\Str;
$result = Str::doesntEndWith('This is my name', 'dog');
// true您也可以传递一个值数组,以确定给定的字符串不以数组中的任何值结尾:
use Illuminate\Support\Str;
$result = Str::doesntEndWith('This is my name', ['this', 'foo']);
// true
$result = Str::doesntEndWith('This is my name', ['name', 'foo']);
// falseStr::doesntStartWith()Str::doesntStartWith 方法判断给定的字符串是否不以给定的值开头:
use Illuminate\Support\Str;
$result = Str::doesntStartWith('This is my name', 'That');
// true如果传入一个可能值的数组,doesntStartWith 方法将返回 true,如果字符串不以任何给定值开头:
$result = Str::doesntStartWith('This is my name', ['What', 'That', 'There']);
// trueStr::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']);
// falseStr::excerpt()Str::excerpt 方法从给定字符串中提取摘录,该摘录匹配该字符串中某个短语的第一个实例:
use Illuminate\Support\Str;
$excerpt = Str::excerpt('This is my name', 'my', [
'radius' => 3
]);
// '...is my na...'该 radius 选项, 其默认值为 100, 允许您定义应出现在截断字符串每一侧的字符数.
此外,您可以使用 omission 选项来定义将前置和后置到截断字符串的字符串:
use Illuminate\Support\Str;
$excerpt = Str::excerpt('This is my name', 'name', [
'radius' => 3,
'omission' => '(...) '
]);
// '(...) my name'Str::finish()Str::finish 方法会向字符串添加给定值的一个实例,前提是该字符串不以该值结尾:
use Illuminate\Support\Str;
$adjusted = Str::finish('this/string', '/');
// this/string/
$adjusted = Str::finish('this/string/', '/');
// this/string/Str::fromBase64()这 Str::fromBase64 方法解码给定的 Base64 字符串:
use Illuminate\Support\Str;
$decoded = Str::fromBase64('TGFyYXZlbA==');
// LaravelStr::headline()Str::headline 方法会将由大小写、连字符或下划线分隔的字符串转换为一个由空格分隔的字符串,其中每个单词的首字母大写:
use Illuminate\Support\Str;
$headline = Str::headline('steve_jobs');
// Steve Jobs
$headline = Str::headline('EmailNotificationSent');
// Email Notification SentStr::inlineMarkdown()Str::inlineMarkdown 方法使用 CommonMark 将 GitHub 风格的 Markdown 转换为内联 HTML. 然而, 与 markdown 方法不同, 它不会将所有生成的 HTML 包裹在块级元素中:
use Illuminate\Support\Str;
$html = Str::inlineMarkdown('**Laravel**');
// <strong>Laravel</strong>默认情况下,Markdown 支持原始 HTML,当与原始用户输入一起使用时,这将导致暴露跨站脚本 (XSS) 漏洞。根据 CommonMark 安全文档,你可以使用 html_input 选项来转义或剥离原始 HTML,以及 allow_unsafe_links 选项来指定是否允许不安全的链接。如果你需要允许一些原始 HTML,你应该将你编译的 Markdown 通过一个 HTML Purifier 进行处理:
use Illuminate\Support\Str;
Str::inlineMarkdown('Inject: <script>alert("Hello XSS!");</script>', [
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// Inject: alert("Hello XSS!");Str::is()Str::is 方法用于确定给定字符串是否匹配给定模式。 星号可作为通配符使用:
use Illuminate\Support\Str;
$matches = Str::is('foo*', 'foobar');
// true
$matches = Str::is('baz*', 'foobar');
// false您可以通过将 ignoreCase 参数设置为 true 来禁用大小写敏感性:
use Illuminate\Support\Str;
$matches = Str::is('*.jpg', 'photo.JPG', ignoreCase: true);
// trueStr::isAscii()Str::isAscii 方法判断给定字符串是否为 7 位 ASCII:
use Illuminate\Support\Str;
$isAscii = Str::isAscii('Taylor');
// true
$isAscii = Str::isAscii('ü');
// falseStr::isJson()Str::isJson 方法判断给定的字符串是否是有效的 JSON:`
use Illuminate\Support\Str;
$result = Str::isJson('[1,2,3]');
// true
$result = Str::isJson('{"first": "John", "last": "Doe"}');
// true
$result = Str::isJson('{first: "John", last: "Doe"}');
// falseStr::是URL()Str::isUrl 方法确定给定字符串是否为有效URL:
use Illuminate\Support\Str;
$isUrl = Str::isUrl('http://example.com');
// true
$isUrl = Str::isUrl('laravel');
// falseisUrl 方法认为各种协议都有效。但是,您可以通过将协议提供给 isUrl 方法来指定哪些协议应被视为有效:
$isUrl = Str::isUrl('http://example.com', ['http', 'https']);Str::isUlid()Str::isUlid 方法判断给定字符串是否是一个有效的 ULID:`
use Illuminate\Support\Str;
$isUlid = Str::isUlid('01gd6r360bp37zj17nxb55yv40');
// true
$isUlid = Str::isUlid('laravel');
// falseStr::isUuid()Str::isUuid 方法确定给定的字符串是否是有效的 UUID:`
use Illuminate\Support\Str;
$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');
// true
$isUuid = Str::isUuid('laravel');
// false你还可以验证给定的 UUID 是否与按版本 (1, 3, 4, 5, 6, 7, 或 8) 的 UUID 规范匹配:
use Illuminate\Support\Str;
$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de', version: 4);
// true
$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de', version: 1);
// falseStr::kebab()该 Str::kebab 方法将给定字符串转换为 kebab-case:
use Illuminate\Support\Str;
$converted = Str::kebab('fooBar');
// foo-barStr::lcfirst()Str::lcfirst 方法返回给定字符串的首字母小写版本:
use Illuminate\Support\Str;
$string = Str::lcfirst('Foo Bar');
// foo BarStr::length()该 Str::length 方法返回给定字符串的长度:
use Illuminate\Support\Str;
$length = Str::length('Laravel');
// 7Str::limit()Str::limit 方法将给定字符串截断到指定长度:
use Illuminate\Support\Str;
$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20);
// The quick brown fox...您可以传入第三个参数给该方法,来改变将被附加到截断字符串末尾的字符串:
$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20, ' (...)');
// The quick brown fox (...)如果您想在截断字符串时保留完整的单词,您可以使用 preserveWords 参数。当此参数为 true 时,字符串将被截断到最近的完整单词边界:
$truncated = Str::limit('The quick brown fox', 12, preserveWords: true);
// The quick...Str::lower()该 Str::lower 方法将给定字符串转换为小写:
use Illuminate\Support\Str;
$converted = Str::lower('LARAVEL');
// laravelStr::markdown()Str::markdown 方法将 GitHub 风格的 Markdown 转换为 HTML,使用 CommonMark:
use Illuminate\Support\Str;
$html = Str::markdown('# Laravel');
// <h1>Laravel</h1>
$html = Str::markdown('# Taylor <b>Otwell</b>', [
'html_input' => 'strip',
]);
// <h1>Taylor Otwell</h1>默认情况下,Markdown 支持原始 HTML,这将在与原始用户输入一起使用时,暴露跨站脚本 (XSS) 漏洞。根据 CommonMark 安全文档,您可以使用 html_input 选项来转义或剥离原始 HTML,以及 allow_unsafe_links 选项来指定是否允许不安全的链接。如果您需要允许某些原始 HTML,您应该通过 HTML Purifier 处理您编译的 Markdown:
use Illuminate\Support\Str;
Str::markdown('Inject: <script>alert("Hello XSS!");</script>', [
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// <p>Inject: alert("Hello XSS!");</p>Str::mask()Str::mask 方法使用重复字符遮盖字符串的一部分,可用于混淆字符串的某些片段,例如电子邮件地址和电话号码:
use Illuminate\Support\Str;
$string = Str::mask('taylor@example.com', '*', 3);
// tay***************如果需要,您可以向 mask 方法提供一个负数作为第三个参数,这将指示该方法从字符串末尾给定距离处开始掩码:
$string = Str::mask('taylor@example.com', '*', -15, 3);
// tay***@example.comStr::match()Str::match 方法将返回字符串中与给定正则表达式模式匹配的部分:
use Illuminate\Support\Str;
$result = Str::match('/bar/', 'foo bar');
// 'bar'
$result = Str::match('/foo (.*)/', 'foo bar');
// 'bar'Str::matchAll()该 Str::matchAll 方法将返回一个集合,其中包含与给定正则表达式模式匹配的字符串部分:
use Illuminate\Support\Str;
$result = Str::matchAll('/bar/', 'bar foo bar');
// collect(['bar', 'bar'])如果你在表达式中指定一个匹配组,Laravel 将返回第一个匹配组的匹配项集合:
use Illuminate\Support\Str;
$result = Str::matchAll('/f(\w*)/', 'bar fun bar fly');
// collect(['un', 'ly']);如果没有找到匹配项,将返回一个空集合。
Str::orderedUuid()Str::orderedUuid 方法生成一个“时间戳优先”的 UUID,可高效存储在一个索引数据库列中。每个使用此方法生成的 UUID 将排在先前使用此方法生成的 UUID 之后:
use Illuminate\Support\Str;
return (string) Str::orderedUuid();Str::padBoth()Str::padBoth 方法封装了 PHP 的 str_pad 函数,用另一个字符串填充字符串的两侧,直到最终字符串达到所需的长度:
use Illuminate\Support\Str;
$padded = Str::padBoth('James', 10, '_');
// '__James___'
$padded = Str::padBoth('James', 10);
// ' James 'Str::padLeft()Str::padLeft 方法封装了 PHP 的 str_pad 函数,用另一个字符串填充字符串的左侧,直到最终字符串达到所需的长度:
use Illuminate\Support\Str;
$padded = Str::padLeft('James', 10, '-=');
// '-=-=-James'
$padded = Str::padLeft('James', 10);
// ' James'Str::padRight()该 Str::padRight 方法封装了 PHP 的 str_pad 函数,用另一个字符串填充字符串的右侧,直到最终字符串达到所需长度:
use Illuminate\Support\Str;
$padded = Str::padRight('James', 10, '-');
// 'James-----'
$padded = Str::padRight('James', 10);
// 'James 'Str::password()Str::password 方法可用于生成指定长度的安全随机密码。该密码将包含字母、数字、符号和空格的组合。默认情况下,密码长度为 32 个字符:
use Illuminate\Support\Str;
$password = Str::password();
// 'EbJo2vE-AS:U,$%_gkrV4n,q~1xy/-_4'
$password = Str::password(12);
// 'qwuar>#V|i]N'Str::plural()Str::plural 方法将一个单数单词字符串转换为其复数形式。此函数支持 Laravel 多数化器支持的任何语言:
use Illuminate\Support\Str;
$plural = Str::plural('car');
// cars
$plural = Str::plural('child');
// children您可以提供一个整数作为函数的第二个参数,以获取字符串的单数或复数形式:
use Illuminate\Support\Str;
$plural = Str::plural('child', 2);
// children
$singular = Str::plural('child', 1);
// child可以提供 prependCount 参数,用于将格式化的 $count 作为复数形式字符串的前缀:
use Illuminate\Support\Str;
$label = Str::plural('car', 1000, prependCount: true);
// 1,000 carsStr::pluralStudly()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);
// VerifiedHumanStr::position()Str::position 方法返回子字符串在字符串中首次出现的位置。如果子字符串在给定字符串中不存在,则返回 false:`
use Illuminate\Support\Str;
$position = Str::position('Hello, World!', 'Hello');
// 0
$position = Str::position('Hello, World!', 'W');
// 7Str::random()Str::random 方法生成指定长度的随机字符串。此函数使用 PHP 的 random_bytes 函数:
use Illuminate\Support\Str;
$random = Str::random(40);在测试期间,伪造由 Str::random 方法返回的值可能很有用。为此,你可以使用 createRandomStringsUsing 方法:
Str::createRandomStringsUsing(function () {
return 'fake-random-string';
});要指示 random 方法恢复正常生成随机字符串,您可以调用 createRandomStringsNormally 方法:
Str::createRandomStringsNormally();Str::remove()该 Str::remove 方法从字符串中移除给定值或值数组:
use Illuminate\Support\Str;
$string = 'Peter Piper picked a peck of pickled peppers.';
$removed = Str::remove('e', $string);
// Ptr Pipr pickd a pck of pickld ppprs.您也可以传递 false 作为第三个参数给 remove 方法,以在移除字符串时忽略大小写。
Str::repeat()该 Str::repeat 方法重复给定字符串:
use Illuminate\Support\Str;
$string = 'a';
$repeat = Str::repeat($string, 5);
// aaaaaStr::replace()该 Str::replace 方法替换字符串中的给定字符串:
use Illuminate\Support\Str;
$string = 'Laravel 11.x';
$replaced = Str::replace('11.x', '12.x', $string);
// Laravel 12.xreplace 方法也接受一个 caseSensitive 参数。默认情况下,replace 方法是区分大小写的:
$replaced = Str::replace(
'php',
'Laravel',
'PHP Framework for Web Artisans',
caseSensitive: false
);
// Laravel Framework for Web ArtisansStr::replaceArray()Str::replaceArray 方法使用数组按顺序替换字符串中的给定值:
use Illuminate\Support\Str;
$string = 'The event will take place between ? and ?';
$replaced = Str::replaceArray('?', ['8:30', '9:00'], $string);
// The event will take place between 8:30 and 9:00Str::replaceFirst()该 Str::replaceFirst 方法 替换字符串中给定值的首次出现:
use Illuminate\Support\Str;
$replaced = Str::replaceFirst('the', 'a', 'the quick brown fox jumps over the lazy dog');
// a quick brown fox jumps over the lazy dogStr::replaceLast()Str::replaceLast 方法替换字符串中给定值的最后一次出现:
use Illuminate\Support\Str;
$replaced = Str::replaceLast('the', 'a', 'the quick brown fox jumps over the lazy dog');
// the quick brown fox jumps over a lazy dogStr::replaceMatches()Str::replaceMatches 方法替换字符串中所有匹配给定模式的部分,替换为给定的替换字符串:
use Illuminate\Support\Str;
$replaced = Str::replaceMatches(
pattern: '/[^A-Za-z0-9]++/',
replace: '',
subject: '(+1) 501-555-1000'
)
// '15015551000'replaceMatches 方法也接受一个闭包,该闭包将针对与给定模式匹配的字符串的每个部分进行调用,允许您在闭包中执行替换逻辑并返回替换后的值:
use Illuminate\Support\Str;
$replaced = Str::replaceMatches('/\d/', function (array $matches) {
return '['.$matches[0].']';
}, '123');
// '[1][2][3]'Str::替换开头()Str::replaceStart 方法替换给定值的第一个匹配项,但仅当该值出现在字符串开头时:
use Illuminate\Support\Str;
$replaced = Str::replaceStart('Hello', 'Laravel', 'Hello World');
// Laravel World
$replaced = Str::replaceStart('World', 'Laravel', 'Hello World');
// Hello WorldStr::replaceEnd()这Str::replaceEnd方法替换给定值的最后一次出现,仅当该值出现在字符串的末尾时:
use Illuminate\Support\Str;
$replaced = Str::replaceEnd('World', 'Laravel', 'Hello World');
// Hello Laravel
$replaced = Str::replaceEnd('Hello', 'Laravel', 'Hello World');
// Hello WorldStr::反转()该 Str::reverse 方法反转给定的字符串:
use Illuminate\Support\Str;
$reversed = Str::reverse('Hello World');
// dlroW olleHStr::singular()Str::singular 方法将字符串转换为其单数形式。此函数支持 Laravel 复合名词化器支持的任何语言:
use Illuminate\Support\Str;
$singular = Str::singular('cars');
// car
$singular = Str::singular('children');
// childStr::slug()该 Str::slug 方法从给定的字符串生成一个 URL 友好的 "slug":
use Illuminate\Support\Str;
$slug = Str::slug('Laravel 5 Framework', '-');
// laravel-5-frameworkStr::snake()该 Str::snake 方法将给定字符串转换为 snake_case:
use Illuminate\Support\Str;
$converted = Str::snake('fooBar');
// foo_bar
$converted = Str::snake('fooBar', '-');
// foo-barStr::squish()该 Str::squish 方法会移除字符串中所有多余的空白字符,包括单词之间的多余空白字符:
use Illuminate\Support\Str;
$string = Str::squish(' laravel framework ');
// laravel frameworkStr::start()Str::start 方法会给一个字符串添加给定值的一个实例,如果该字符串尚未以此值开头:
use Illuminate\Support\Str;
$adjusted = Str::start('this/string', '/');
// /this/string
$adjusted = Str::start('/this/string', '/');
// /this/stringStr::startsWith()Str::startsWith 方法判断给定字符串是否以给定值开头:
use Illuminate\Support\Str;
$result = Str::startsWith('This is my name', 'This');
// true如果传入一个可能值的数组,startsWith 方法将返回 true,如果该字符串以任何一个给定值开头:
$result = Str::startsWith('This is my name', ['This', 'That', 'There']);
// trueStr::studly()此 Str::studly 方法将给定字符串转换为 StudlyCase:
use Illuminate\Support\Str;
$converted = Str::studly('foo_bar');
// FooBarStr::substr()Str::substr 方法返回由起始和长度参数指定的字符串片段:
use Illuminate\Support\Str;
$converted = Str::substr('The Laravel Framework', 4, 7);
// LaravelStr::子串计数()该 Str::substrCount 方法返回给定值在给定字符串中出现的次数:
use Illuminate\Support\Str;
$count = Str::substrCount('If you like ice cream, you will like snow cones.', 'like');
// 2Str::substrReplace()Str::substrReplace 方法用指定文本替换字符串的某个部分,从第三个参数指定的起始位置开始,并替换第四个参数指定的字符数。传递 0 到该方法的第四个参数将会在指定位置插入字符串,而不会替换字符串中任何现有字符:
use Illuminate\Support\Str;
$result = Str::substrReplace('1300', ':', 2);
// 13:
$result = Str::substrReplace('1300', ':', 2, 0);
// 13:00Str::swap()Str::swap 方法使用 PHP 的 strtr 函数在给定字符串中替换多个值:
use Illuminate\Support\Str;
$string = Str::swap([
'Tacos' => 'Burritos',
'great' => 'fantastic',
], 'Tacos are great!');
// Burritos are fantastic!Str::take()Str::take 方法从字符串的开头返回指定数量的字符:`
use Illuminate\Support\Str;
$taken = Str::take('Build something amazing!', 5);
// BuildStr::title()Str::title 方法将给定的字符串转换为 Title Case:
use Illuminate\Support\Str;
$converted = Str::title('a nice title uses the correct case');
// A Nice Title Uses The Correct CaseStr::toBase64()Str::toBase64 方法将给定字符串转换为 Base64:
use Illuminate\Support\Str;
$base64 = Str::toBase64('Laravel');
// TGFyYXZlbA==Str::转写()Str::transliterate 方法将尝试将给定字符串转换为与其最接近的 ASCII 表示形式:
use Illuminate\Support\Str;
$email = Str::transliterate('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ');
// 'test@laravel.com'Str::trim()该 Str::trim 方法会从给定字符串的开头和结尾移除空白字符(或其他字符)。与 PHP 的原生 trim 函数不同,该 Str::trim 方法还会移除 Unicode 空白字符:
use Illuminate\Support\Str;
$string = Str::trim(' foo bar ');
// 'foo bar'Str::ltrim()Str::ltrim 方法会从给定字符串的开头去除空白字符(或其他字符). 与 PHP 原生的 ltrim 函数不同,Str::ltrim 方法还会移除 Unicode 空白字符:
use Illuminate\Support\Str;
$string = Str::ltrim(' foo bar ');
// 'foo bar 'Str::rtrim()Str::rtrim 方法会从给定字符串的末尾移除空白字符(或其他字符)。与 PHP 原生的 rtrim 函数不同,Str::rtrim 方法还会移除 Unicode 空白字符:
use Illuminate\Support\Str;
$string = Str::rtrim(' foo bar ');
// ' foo bar'Str::ucfirst()该 Str::ucfirst 方法返回给定字符串,并将其首字母大写:
use Illuminate\Support\Str;
$string = Str::ucfirst('foo bar');
// Foo barStr::ucsplit()Str::ucsplit 方法按大写字符将给定字符串拆分为一个数组:
use Illuminate\Support\Str;
$segments = Str::ucsplit('FooBar');
// [0 => 'Foo', 1 => 'Bar']Str::ucwords()Str::ucwords 方法将给定字符串中每个单词的首字母转换为大写:
use Illuminate\Support\Str;
$string = Str::ucwords('laravel framework');
// Laravel FrameworkStr::upper()Str::upper 方法将给定字符串转换为大写:
use Illuminate\Support\Str;
$string = Str::upper('laravel');
// LARAVELStr::ulid()该Str::ulid方法生成一个 ULID,它是一个紧凑的、按时间排序的唯一标识符:
use Illuminate\Support\Str;
return (string) Str::ulid();
// 01gd6r360bp37zj17nxb55yv40如果您想要检索一个 Illuminate\Support\Carbon 日期实例,表示给定 ULID 的创建日期和时间, 您可以使用 Laravel 的 Carbon 集成所提供的 createFromId 方法:
use Illuminate\Support\Carbon;
use Illuminate\Support\Str;
$date = Carbon::createFromId((string) Str::ulid());在测试期间,可能需要“模拟”由 Str::ulid 方法返回的值。为此,您可以使用 createUlidsUsing 方法:
use Symfony\Component\Uid\Ulid;
Str::createUlidsUsing(function () {
return new Ulid('01HRDBNHHCKNW2AK4Z29SN82T9');
});To instruct the ulid method to return to generating ULIDs normally, you may invoke the createUlidsNormally method:
Str::createUlidsNormally();Str::unwrap()该 Str::unwrap 方法会从给定字符串的开头和结尾移除指定的字符串:
use Illuminate\Support\Str;
Str::unwrap('-Laravel-', '-');
// Laravel
Str::unwrap('{framework: "Laravel"}', '{', '}');
// framework: "Laravel"Str::uuid()该Str::uuid方法 生成 一个 UUID (版本 4):
use Illuminate\Support\Str;
return (string) Str::uuid();在测试期间,"伪造" Str::uuid 方法返回的值可能会很有用。为此,您可以使用 createUuidsUsing 方法:
use Ramsey\Uuid\Uuid;
Str::createUuidsUsing(function () {
return Uuid::fromString('eadbfeac-5258-45c2-bab7-ccb9b5ef74f9');
});要指示 uuid 方法恢复正常生成 UUID,你可以调用 createUuidsNormally 方法:
Str::createUuidsNormally();Str::uuid7()该 Str::uuid7 方法生成一个 UUID(版本 7):
use Illuminate\Support\Str;
return (string) Str::uuid7();一个 DateTimeInterface 可以作为可选参数传递,它将用于生成有序 UUID:
return (string) Str::uuid7(time: now());字符串::统计词数()Str::wordCount 方法返回字符串包含的单词数量:
use Illuminate\Support\Str;
Str::wordCount('Hello, world!'); // 2Str::wordWrap()该 Str::wordWrap 方法将字符串按给定字符数进行换行:
use Illuminate\Support\Str;
$text = "The quick brown fox jumped over the lazy dog."
Str::wordWrap($text, characters: 20, break: "<br />\n");
/*
The quick brown fox<br />
jumped over the lazy<br />
dog.
*/Str::words()Str::words 方法限制字符串中的单词数量。可以通过其第三个参数向此方法传递一个附加字符串,以指定应附加到截断字符串末尾的字符串:
use Illuminate\Support\Str;
return Str::words('Perfectly balanced, as all things should be.', 3, ' >>>');
// Perfectly balanced, as >>>Str::wrap()Str::wrap 方法使用一个额外的字符串或一对字符串来包裹给定的字符串:
use Illuminate\Support\Str;
Str::wrap('Laravel', '"');
// "Laravel"
Str::wrap('is', before: 'This ', after: ' Laravel!');
// This is Laravel!str()该str函数返回给定字符串的一个新的Illuminate\Support\Stringable实例。此函数等同于Str::of方法:
$string = str('Taylor')->append(' Otwell');
// 'Taylor Otwell'如果没有提供参数给 str 函数,该函数将返回一个 Illuminate\Support\Str 实例:
$snake = str()->snake('FooBar');
// 'foo_bar'trans()该 trans 函数使用您的 语言文件 翻译给定的翻译键:
echo trans('messages.welcome');如果指定的翻译键不存在, trans 函数将返回给定的键。 因此,使用上述示例, trans 函数将返回 messages.welcome 如果翻译键不存在。
trans_choice()trans_choice 函数根据词形变化翻译给定的翻译键:
echo trans_choice('messages.notifications', $unreadCount);如果指定的翻译键不存在,trans_choice 函数将返回给定的键。因此,按照上面的例子,如果翻译键不存在,trans_choice 函数将返回 messages.notifications。
流式字符串提供了一个更流畅、面向对象的接口来处理字符串值,允许你将多个字符串操作以链式方式连接起来,与传统字符串操作相比,它使用了更具可读性的语法。
该after方法返回字符串中给定值之后的所有内容。 该 整个字符串将被返回如果该值不存在于字符串中:
use Illuminate\Support\Str;
$slice = Str::of('This is my name')->after('This is');
// ' my name'afterLast该 afterLast 方法返回字符串中给定值最后一次出现之后的所有内容。如果该值在字符串中不存在,则会返回整个字符串:
use Illuminate\Support\Str;
$slice = Str::of('App\Http\Controllers\Controller')->afterLast('\\');
// 'Controller'apa该 apa 方法将给定字符串转换为首字母大写格式,遵循 APA 指南:
use Illuminate\Support\Str;
$converted = Str::of('a nice title uses the correct case')->apa();
// A Nice Title Uses the Correct Case追加该 append 方法将给定的值追加到字符串中:
use Illuminate\Support\Str;
$string = Str::of('Taylor')->append(' Otwell');
// 'Taylor Otwell'ascii该 ascii 方法将尝试将该字符串转写为一个 ASCII 值:
use Illuminate\Support\Str;
$string = Str::of('ü')->ascii();
// 'u'basenamebasename 方法将返回给定字符串的尾部名称组件:
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 方法返回字符串中给定值之前的所有内容:
use Illuminate\Support\Str;
$slice = Str::of('This is my name')->before('my name');
// 'This is 'beforeLast该 beforeLast 方法 返回 在字符串中给定值最后一次出现之前的所有内容:
use Illuminate\Support\Str;
$slice = Str::of('This is my name')->beforeLast('is');
// 'This '之间该 between 方法返回字符串中介于两个值之间的部分:
use Illuminate\Support\Str;
$converted = Str::of('This is my name')->between('This', 'name');
// ' is my '介于首个之间该 betweenFirst 方法返回一个字符串在两个值之间尽可能小的部分:
use Illuminate\Support\Str;
$converted = Str::of('[a] bc [d]')->betweenFirst('[', ']');
// 'a'camelcamel 方法将给定的字符串转换为 camelCase 格式:
use Illuminate\Support\Str;
$converted = Str::of('foo_bar')->camel();
// 'fooBar'charAtcharAt 方法返回指定索引处的字符。如果索引超出范围,false 被返回:
use Illuminate\Support\Str;
$character = Str::of('This is my name.')->charAt(6);
// 's'classBasename该 classBasename 方法返回给定类的类名,并移除了该类的命名空间:
use Illuminate\Support\Str;
$class = Str::of('Foo\Bar\Baz')->classBasename();
// 'Baz'chopStartchopStart 方法会移除给定值的首次出现,但前提是该值必须出现在字符串的开头:
use Illuminate\Support\Str;
$url = Str::of('https://laravel.com')->chopStart('https://');
// 'laravel.com'您也可以传入一个数组。如果字符串以数组中的任何值开头,那么该值将从字符串中移除:
use Illuminate\Support\Str;
$url = Str::of('http://laravel.com')->chopStart(['https://', 'http://']);
// 'laravel.com'chopEndchopEnd 方法仅在给定值出现在字符串末尾时,移除该值的最后一个匹配项:
use Illuminate\Support\Str;
$url = Str::of('https://laravel.com')->chopEnd('.com');
// 'https://laravel'您也可以传递一个数组。如果字符串以数组中的任何值结尾,那么该值将从字符串中移除:
use Illuminate\Support\Str;
$url = Str::of('http://laravel.com')->chopEnd(['.com', '.io']);
// 'http://laravel'包含该 contains 方法判断给定字符串是否包含给定值。默认情况下,此方法区分大小写:
use Illuminate\Support\Str;
$contains = Str::of('This is my name')->contains('my');
// true您还可以传入一个值数组,以确定给定字符串是否包含数组中的任何值:
use Illuminate\Support\Str;
$contains = Str::of('This is my name')->contains(['my', 'foo']);
// true您可以通过将 ignoreCase 参数设置为 true 来禁用大小写敏感性:
use Illuminate\Support\Str;
$contains = Str::of('This is my name')->contains('MY', ignoreCase: true);
// true包含所有containsAll 方法判断给定的字符串是否包含给定数组中的所有值:
use Illuminate\Support\Str;
$containsAll = Str::of('This is my name')->containsAll(['my', 'name']);
// true您可以禁用大小写敏感性,方法是将 ignoreCase 参数设置为 true:
use Illuminate\Support\Str;
$containsAll = Str::of('This is my name')->containsAll(['MY', 'NAME'], ignoreCase: true);
// true解密该 decrypt 方法 解密 加密后的字符串:
use Illuminate\Support\Str;
$decrypted = $encrypted->decrypt();
// 'secret'对于 解密 的逆操作,请参阅 加密 方法。
去重deduplicate 方法将给定字符串中一个字符的连续出现替换为该字符的单个出现。默认情况下,该方法会去重空格:
use Illuminate\Support\Str;
$result = Str::of('The Laravel Framework')->deduplicate();
// The Laravel Framework你可以通过将一个不同的字符作为该方法的第二个参数传入,来指定去重字符:
use Illuminate\Support\Str;
$result = Str::of('The---Laravel---Framework')->deduplicate('-');
// The-Laravel-Frameworkdirname该 dirname 方法返回给定字符串的父目录部分:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz')->dirname();
// '/foo/bar'如有必要,您可以指定要从字符串中修剪多少个目录级别:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz')->dirname(2);
// '/foo'不包含()该 doesntContain 方法判断给定字符串是否不包含给定值。此方法是 contains 方法的逆操作。默认情况下,此方法区分大小写:
use Illuminate\Support\Str;
$doesntContain = Str::of('This is name')->doesntContain('my');
// true你还可以传入一个值数组,以判断给定的字符串是否不包含数组中的任何值:
use Illuminate\Support\Str;
$doesntContain = Str::of('This is name')->doesntContain(['my', 'framework']);
// true您可以通过将 ignoreCase 参数设置为 true 来禁用大小写敏感性:
use Illuminate\Support\Str;
$doesntContain = Str::of('This is my name')->doesntContain('MY', ignoreCase: true);
// falsedoesntEndWith该 doesntEndWith 方法确定给定字符串是否不以给定值结尾:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->doesntEndWith('dog');
// true你也可以传递一个值数组,以确定给定的字符串是否不以数组中的任何值结尾:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->doesntEndWith(['this', 'foo']);
// true
$result = Str::of('This is my name')->doesntEndWith(['name', 'foo']);
// falsedoesntStartWithdoesntStartWith 方法确定给定的字符串是否不以给定值开头:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->doesntStartWith('That');
// true您也可以传递一个值数组,以确定给定字符串是否不以数组中的任何值开头:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->doesntStartWith(['What', 'That', 'There']);
// true加密encrypt 方法 加密 字符串:
use Illuminate\Support\Str;
$encrypted = Str::of('secret')->encrypt();要了解 encrypt 的逆操作, 请参阅 解密 方法.
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 方法确定给定字符串是否与另一个字符串完全匹配:
use Illuminate\Support\Str;
$result = Str::of('Laravel')->exactly('Laravel');
// true摘录该 excerpt 方法从字符串中提取一个摘要,该摘要匹配字符串中某个短语的第一个实例:
use Illuminate\Support\Str;
$excerpt = Str::of('This is my name')->excerpt('my', [
'radius' => 3
]);
// '...is my na...'radius 选项,其默认值为 100,允许您定义截断字符串每一侧应显示的字符数。
此外,您可以使用 omission 选项来更改将前置和后置在截断字符串上的字符串:
use Illuminate\Support\Str;
$excerpt = Str::of('This is my name')->excerpt('name', [
'radius' => 3,
'omission' => '(...) '
]);
// '(...) my name'拆分explode 方法根据给定的分隔符拆分字符串,并返回一个包含拆分字符串各部分的集合:
use Illuminate\Support\Str;
$collection = Str::of('foo bar baz')->explode(' ');
// collect(['foo', 'bar', 'baz'])完成finish 方法将给定值的一个实例添加到字符串中,如果该字符串尚未以此值结尾:
use Illuminate\Support\Str;
$adjusted = Str::of('this/string')->finish('/');
// this/string/
$adjusted = Str::of('this/string/')->finish('/');
// this/string/这 fromBase64 方法解码给定的 Base64 字符串:
use Illuminate\Support\Str;
$decoded = Str::of('TGFyYXZlbA==')->fromBase64();
// Laravel哈希该 hash 方法使用给定的 算法 对字符串进行哈希处理:
use Illuminate\Support\Str;
$hashed = Str::of('secret')->hash(algorithm: 'sha256');
// '2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b'标题该 headline 方法会将由大小写、连字符或下划线分隔的字符串转换为一个以空格分隔的字符串,其中每个单词的首字母大写:
use Illuminate\Support\Str;
$headline = Str::of('taylor_otwell')->headline();
// Taylor Otwell
$headline = Str::of('EmailNotificationSent')->headline();
// Email Notification SentinlineMarkdowninlineMarkdown 方法使用 CommonMark 将 GitHub 风味的 Markdown 转换为行内 HTML。然而,与 markdown 方法不同的是,它不会将所有生成的 HTML 包裹在一个块级元素中:
use Illuminate\Support\Str;
$html = Str::of('**Laravel**')->inlineMarkdown();
// <strong>Laravel</strong>默认情况下,Markdown 支持原始 HTML,在与原始用户输入一起使用时,这将暴露跨站脚本 (XSS) 漏洞。根据 CommonMark 安全文档,您可以使用 html_input 选项来转义或剥离原始 HTML,以及 allow_unsafe_links 选项来指定是否允许不安全的链接。如果您需要允许某些原始 HTML,您应该将编译后的 Markdown 通过 HTML Purifier 处理:
use Illuminate\Support\Str;
Str::of('Inject: <script>alert("Hello XSS!");</script>')->inlineMarkdown([
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// Inject: alert("Hello XSS!");是该 is 方法确定给定字符串是否匹配给定模式。星号可用作通配符值
use Illuminate\Support\Str;
$matches = Str::of('foobar')->is('foo*');
// true
$matches = Str::of('foobar')->is('baz*');
// false是否为 ASCII该 isAscii 方法判断给定字符串是否是 ASCII 字符串:
use Illuminate\Support\Str;
$result = Str::of('Taylor')->isAscii();
// true
$result = Str::of('ü')->isAscii();
// falseisEmptyisEmpty 方法判断给定的字符串是否为空:
use Illuminate\Support\Str;
$result = Str::of(' ')->trim()->isEmpty();
// true
$result = Str::of('Laravel')->trim()->isEmpty();
// falseisNotEmpty该 isNotEmpty 方法用于判断给定的字符串是否不为空:
use Illuminate\Support\Str;
$result = Str::of(' ')->trim()->isNotEmpty();
// false
$result = Str::of('Laravel')->trim()->isNotEmpty();
// trueisJson 方法判断给定字符串是否为有效的 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();
// falseisUlidisUlid 方法判断给定字符串是否是一个 ULID:
use Illuminate\Support\Str;
$result = Str::of('01gd6r360bp37zj17nxb55yv40')->isUlid();
// true
$result = Str::of('Taylor')->isUlid();
// falseisUrlisUrl 方法用于判断给定的字符串是否为 URL:
use Illuminate\Support\Str;
$result = Str::of('http://example.com')->isUrl();
// true
$result = Str::of('Taylor')->isUrl();
// false该isUrl方法认为多种协议是有效的。然而,您可以通过将协议提供给isUrl方法来指定应被视为有效的协议:
$result = Str::of('http://example.com')->isUrl(['http', 'https']);是否是 UUIDisUuid 方法判断给定字符串是否为 UUID:
use Illuminate\Support\Str;
$result = Str::of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c')->isUuid();
// true
$result = Str::of('Taylor')->isUuid();
// false您还可以验证给定的 UUID 是否符合按版本(1、3、4、5、6、7 或 8)的 UUID 规范:
use Illuminate\Support\Str;
$isUuid = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->isUuid(version: 4);
// true
$isUuid = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->isUuid(version: 1);
// falsekebab该 kebab 方法将给定的字符串转换为 kebab-case:
use Illuminate\Support\Str;
$converted = Str::of('fooBar')->kebab();
// foo-barlcfirst该 lcfirst 方法返回首字符小写的给定字符串:
use Illuminate\Support\Str;
$string = Str::of('Foo Bar')->lcfirst();
// foo Bar长度 Thelengthmethod returns the length of the given string:length` 方法返回给定字符串的长度:
use Illuminate\Support\Str;
$length = Str::of('Laravel')->length();
// 7限制limit 方法将给定的字符串截断到指定长度:
use Illuminate\Support\Str;
$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20);
// The quick brown fox...您还可以传递第二个参数,以更改将被附加到截断字符串末尾的字符串:
$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20, ' (...)');
// The quick brown fox (...)如果您希望在截断字符串时保留完整的单词,可以使用 preserveWords 参数。当此参数为 true 时,字符串将被截断到最近的完整单词边界:
$truncated = Str::of('The quick brown fox')->limit(12, preserveWords: true);
// The quick...小写该 lower 方法将给定字符串转换为小写:
use Illuminate\Support\Str;
$result = Str::of('LARAVEL')->lower();
// 'laravel'Markdown该 markdown 方法将 GitHub 风味的 Markdown 转换为 HTML:
use Illuminate\Support\Str;
$html = Str::of('# Laravel')->markdown();
// <h1>Laravel</h1>
$html = Str::of('# Taylor <b>Otwell</b>')->markdown([
'html_input' => 'strip',
]);
// <h1>Taylor Otwell</h1>默认情况下,Markdown 支持原始 HTML,这将在与原始用户输入一起使用时暴露跨站脚本 (XSS) 漏洞。根据 CommonMark 安全文档,您可以使用 html_input 选项来转义或剥离原始 HTML,以及 allow_unsafe_links 选项来指定是否允许不安全的链接。如果您需要允许一些原始 HTML,您应该将编译后的 Markdown 通过 HTML Purifier 处理:
use Illuminate\Support\Str;
Str::of('Inject: <script>alert("Hello XSS!");</script>')->markdown([
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// <p>Inject: alert("Hello XSS!");</p>掩码mask 方法使用重复字符遮盖字符串的一部分,并可用于混淆字符串的片段,例如电子邮件地址和电话号码:
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 方法将返回字符串中与给定正则表达式模式匹配的部分:
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 方法将返回 true 如果字符串匹配给定的正则表达式:
use Illuminate\Support\Str;
$result = Str::of('foo bar')->isMatch('/foo (.*)/');
// true
$result = Str::of('laravel')->isMatch('/foo (.*)/');
// falsenewLine 方法向字符串追加一个“行尾”字符:
use Illuminate\Support\Str;
$padded = Str::of('Laravel')->newLine()->append('Framework');
// 'Laravel
// Framework'padBothpadBoth 方法封装了 PHP 的 str_pad 函数,使用另一个字符串填充字符串的两侧,直到最终字符串达到所需长度:
use Illuminate\Support\Str;
$padded = Str::of('James')->padBoth(10, '_');
// '__James___'
$padded = Str::of('James')->padBoth(10);
// ' James 'padLeftpadLeft 方法封装了 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 方法允许你通过将其当前值传递给给定可调用对象来转换字符串:
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 方法将单数单词字符串转换为其复数形式。此函数支持 Laravel 复数化器支持的任何语言:
use Illuminate\Support\Str;
$plural = Str::of('car')->plural();
// cars
$plural = Str::of('child')->plural();
// children您可以向函数提供一个整数参数,以检索字符串的单数或复数形式:
use Illuminate\Support\Str;
$plural = Str::of('child')->plural(2);
// children
$plural = Str::of('child')->plural(1);
// child您可以提供 prependCount 参数,将格式化的 $count 前置于复数字符串:
use Illuminate\Support\Str;
$label = Str::of('car')->plural(1000, prependCount: true);
// 1,000 cars位置position 方法返回子字符串在字符串中第一次出现的位置。如果子字符串在字符串中不存在,则返回 false:
use Illuminate\Support\Str;
$position = Str::of('Hello, World!')->position('Hello');
// 0
$position = Str::of('Hello, World!')->position('W');
// 7前置prepend 方法会将给定值前置到字符串上:
use Illuminate\Support\Str;
$string = Str::of('Framework')->prepend('Laravel ');
// Laravel Framework该 remove 方法从字符串中移除给定值或值数组:
use Illuminate\Support\Str;
$string = Str::of('Arkansas is quite beautiful!')->remove('quite ');
// Arkansas is beautiful!您也可以将 false 作为第二个参数传递以在移除字符串时忽略大小写。
重复The repeat method repeats the given string:
use Illuminate\Support\Str;
$repeated = Str::of('a')->repeat(5);
// aaaaa替换该 replace 方法替换字符串中的给定字符串:
use Illuminate\Support\Str;
$replaced = Str::of('Laravel 6.x')->replace('6.x', '7.x');
// Laravel 7.x该 replace 方法也接受一个 caseSensitive 参数。默认情况下,该 replace 方法区分大小写:
$replaced = Str::of('macOS 13.x')->replace(
'macOS', 'iOS', caseSensitive: false
);替换数组replaceArray 方法使用数组按顺序替换字符串中的给定值:
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:00replaceFirstreplaceFirst 方法替换字符串中给定值的第一次出现:
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 方法替换字符串中给定值的最后一次出现:
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 方法用给定的替换字符串替换字符串中所有匹配某个模式的部分:
use Illuminate\Support\Str;
$replaced = Str::of('(+1) 501-555-1000')->replaceMatches('/[^A-Za-z0-9]++/', '')
// '15015551000'该 replaceMatches 方法也接受一个闭包,该闭包将被调用,并传入字符串中每个匹配给定模式的部分,允许你在闭包内执行替换逻辑并返回替换后的值:
use Illuminate\Support\Str;
$replaced = Str::of('123')->replaceMatches('/\d/', function (array $matches) {
return '['.$matches[0].']';
});
// '[1][2][3]'该 replaceStart 方法仅当该值出现在字符串开头时,才替换给定值的第一次出现:
use Illuminate\Support\Str;
$replaced = Str::of('Hello World')->replaceStart('Hello', 'Laravel');
// Laravel World
$replaced = Str::of('Hello World')->replaceStart('World', 'Laravel');
// Hello WorldreplaceEnd该 replaceEnd 方法替换给定值的最后一次出现,仅当该值出现在字符串的末尾时:
use Illuminate\Support\Str;
$replaced = Str::of('Hello World')->replaceEnd('World', 'Laravel');
// Hello Laravel
$replaced = Str::of('Hello World')->replaceEnd('Hello', 'Laravel');
// Hello Worldscanscan 方法根据 sscanf PHP 函数 支持的格式,将字符串中的输入解析到一个集合中:
use Illuminate\Support\Str;
$collection = Str::of('filename.jpg')->scan('%[^.].%s');
// collect(['filename', 'jpg'])单数singular 方法将字符串转换为其单数形式。 此函数支持 Laravel 的复数化器所支持的任何语言:
use Illuminate\Support\Str;
$singular = Str::of('cars')->singular();
// car
$singular = Str::of('children')->singular();
// childslugslug 方法从给定字符串生成一个对 URL 友好的 "slug":
use Illuminate\Support\Str;
$slug = Str::of('Laravel Framework')->slug('-');
// laravel-framework蛇该 snake 方法将给定字符串转换为 snake_case:
use Illuminate\Support\Str;
$converted = Str::of('fooBar')->snake();
// foo_bar拆分该 split 方法使用正则表达式将字符串拆分为一个集合:
use Illuminate\Support\Str;
$segments = Str::of('one, two, three')->split('/[\s,]+/');
// collect(["one", "two", "three"])收缩该 squish 方法从字符串中移除所有多余的空白字符,包括单词之间的多余空白字符:
use Illuminate\Support\Str;
$string = Str::of(' laravel framework ')->squish();
// laravel framework开始start 方法会向一个字符串添加给定值的单个实例,如果它尚未以该值开头:
use Illuminate\Support\Str;
$adjusted = Str::of('this/string')->start('/');
// /this/string
$adjusted = Str::of('/this/string')->start('/');
// /this/stringstartsWith该 startsWith 方法判断给定的字符串是否以给定的值开头:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->startsWith('This');
// true您也可以传入一个值数组,以确定给定的字符串是否以数组中的任何一个值开头:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->startsWith(['This', 'That']);
// truestripTagsstripTags 方法从字符串中移除所有 HTML 和 PHP 标签:
use Illuminate\Support\Str;
$result = Str::of('<a href="https://laravel.com">Taylor <b>Otwell</b></a>')->stripTags();
// Taylor Otwell
$result = Str::of('<a href="https://laravel.com">Taylor <b>Otwell</b></a>')->stripTags('<b>');
// Taylor <b>Otwell</b>studly此 studly 方法将给定字符串转换为 StudlyCase:
use Illuminate\Support\Str;
$converted = Str::of('foo_bar')->studly();
// FooBarsubstr该 substr 方法返回由给定的起始和长度参数指定的字符串部分:
use Illuminate\Support\Str;
$string = Str::of('Laravel Framework')->substr(8);
// Framework
$string = Str::of('Laravel Framework')->substr(8, 5);
// FramesubstrReplacesubstrReplace 方法替换字符串的一部分文本,从第二个参数指定的起始位置开始,并替换掉第三个参数指定的字符数量。如果将 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 方法使用 PHP 的 strtr 函数替换字符串中的多个值:
use Illuminate\Support\Str;
$string = Str::of('Tacos are great!')
->swap([
'Tacos' => 'Burritos',
'great' => 'fantastic',
]);
// Burritos are fantastic!取take 方法返回从字符串开头指定数量的字符:
use Illuminate\Support\Str;
$taken = Str::of('Build something amazing!')->take(5);
// Buildtaptap 方法将字符串传递给给定的闭包,允许你检查并与字符串交互,同时不影响字符串本身。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 方法判断字符串是否匹配给定的正则表达式模式:
use Illuminate\Support\Str;
$result = Str::of('Laravel Framework')->test('/Laravel/');
// true标题该 title 方法将给定的字符串转换为 Title Case:
use Illuminate\Support\Str;
$converted = Str::of('a nice title uses the correct case')->title();
// A Nice Title Uses The Correct CasetoBase64该 toBase64 方法将给定字符串转换为 Base64:
use Illuminate\Support\Str;
$base64 = Str::of('Laravel')->toBase64();
// TGFyYXZlbA==toHtmlString该toHtmlString方法将给定字符串转换为Illuminate\Support\HtmlString的实例,在 Blade 模板中渲染时不会被转义:
use Illuminate\Support\Str;
$htmlString = Str::of('Nuno Maduro')->toHtmlString();toUri该 toUri 方法将给定的字符串转换为 Illuminate\Support\Uri 的一个实例:
use Illuminate\Support\Str;
$uri = Str::of('https://example.com')->toUri();转写该 transliterate 方法将尝试把给定字符串转换为其最接近的 ASCII 表示形式:
use Illuminate\Support\Str;
$email = Str::of('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ')->transliterate()
// 'test@laravel.com'trimtrim 方法会修剪给定字符串。与 PHP 原生的 trim 函数不同,Laravel 的 trim 方法还会移除 Unicode 空白字符:
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->trim();
// 'Laravel'
$string = Str::of('/Laravel/')->trim('/');
// 'Laravel'ltrim该 ltrim 方法修剪字符串的左侧。不同于 PHP 原生的 ltrim 函数,Laravel 的 ltrim 方法还会移除 Unicode 空白字符:
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->ltrim();
// 'Laravel '
$string = Str::of('/Laravel/')->ltrim('/');
// 'Laravel/'rtrimrtrim 方法修剪给定字符串的右侧。与 PHP 原生 rtrim 函数不同,Laravel 的 rtrim 方法也移除 Unicode 空白字符:
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->rtrim();
// ' Laravel'
$string = Str::of('/Laravel/')->rtrim('/');
// '/Laravel'ucfirst该 ucfirst 方法 返回 该 给定 字符串 具有 该 首个 字符 大写:
use Illuminate\Support\Str;
$string = Str::of('foo bar')->ucfirst();
// Foo barucsplitucsplit 方法按大写字符将给定字符串分割成一个集合:
use Illuminate\Support\Str;
$string = Str::of('Foo Bar')->ucsplit();
// collect(['Foo ', 'Bar'])ucwordsucwords 方法将给定字符串中每个单词的首字母转换为大写:
use Illuminate\Support\Str;
$string = Str::of('laravel framework')->ucwords();
// Laravel Framework解包unwrap 方法从给定字符串的开头和结尾移除指定的字符串:
use Illuminate\Support\Str;
Str::of('-Laravel-')->unwrap('-');
// Laravel
Str::of('{framework: "Laravel"}')->unwrap('{', '}');
// framework: "Laravel"该 upper 方法将给定字符串转换为大写:
use Illuminate\Support\Str;
$adjusted = Str::of('laravel')->upper();
// LARAVEL当 when方法会在给定条件为true` 时调用给定的闭包。该闭包将接收流畅字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('Taylor')
->when(true, function (Stringable $string) {
return $string->append(' Otwell');
});
// 'Taylor Otwell'If necessary, you may pass another closure as the third parameter to the when method. This closure will execute if the condition parameter evaluates to false.
该 whenContains 方法会在字符串包含给定值时调用给定的闭包。该闭包将接收流畅字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('tony stark')
->whenContains('tony', function (Stringable $string) {
return $string->title();
});
// 'Tony Stark'如有必要,您可以将另一个闭包作为第三个参数传递给 when 方法。如果字符串不包含给定值,该闭包将执行。
您还可以传入一个值数组,以确定给定字符串是否包含数组中的任何值:
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 方法在字符串包含所有给定的子字符串时调用给定的闭包。该闭包将接收流式字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('tony stark')
->whenContainsAll(['tony', 'stark'], function (Stringable $string) {
return $string->title();
});
// 'Tony Stark'如果有必要,你可以传入另一个闭包作为第三个参数给 when 方法。如果条件参数评估结果为 false,这个闭包将会执行。
当不以...结尾时whenDoesntEndWith 方法会在字符串不以给定的子字符串结尾时,调用给定的闭包。该闭包将接收流畅字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('disney world')->whenDoesntEndWith('land', function (Stringable $string) {
return $string->title();
});
// 'Disney World'该whenDoesntStartWith方法在字符串不以给定子字符串开头时,调用给定的闭包。该闭包将接收流式字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('disney world')->whenDoesntStartWith('sea', function (Stringable $string) {
return $string->title();
});
// 'Disney World'为空时whenEmpty 方法在字符串为空时调用给定的闭包。如果闭包返回一个值,那么 whenEmpty 方法也会返回该值。如果闭包不返回值,则返回流式字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of(' ')->trim()->whenEmpty(function (Stringable $string) {
return $string->prepend('Laravel');
});
// 'Laravel'whenNotEmpty 方法在字符串非空时调用给定的闭包。如果闭包返回一个值,whenNotEmpty 方法也将返回该值。如果闭包不返回值,将返回 fluent 字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('Framework')->whenNotEmpty(function (Stringable $string) {
return $string->prepend('Laravel ');
});
// 'Laravel Framework'当以...开头whenStartsWith 方法在字符串以给定子字符串开头时,调用给定的闭包。该闭包将接收流式字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('disney world')->whenStartsWith('disney', function (Stringable $string) {
return $string->title();
});
// 'Disney World'whenEndsWith该whenEndsWith方法会在字符串以给定的子字符串结尾时调用给定的闭包。该闭包将接收流畅字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('disney world')->whenEndsWith('world', function (Stringable $string) {
return $string->title();
});
// 'Disney World'whenExactlywhenExactly 方法会调用给定的闭包,如果字符串与给定字符串完全匹配。闭包将接收流式字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('laravel')->whenExactly('laravel', function (Stringable $string) {
return $string->title();
});
// 'Laravel'whenNotExactly 方法在字符串与给定字符串不完全匹配时,调用给定的闭包。该闭包将接收流畅字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('framework')->whenNotExactly('laravel', function (Stringable $string) {
return $string->title();
});
// 'Framework'whenIs该 whenIs 方法会在字符串匹配给定模式时调用给定的闭包。星号可以用作通配符。该闭包将接收流式字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('foo/bar')->whenIs('foo/*', function (Stringable $string) {
return $string->append('/baz');
});
// 'foo/bar/baz'当为ASCII时whenIsAscii 方法在字符串是 7 位 ASCII 时,调用给定的闭包。该闭包将接收流式字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('laravel')->whenIsAscii(function (Stringable $string) {
return $string->title();
});
// 'Laravel'whenIsUlid该whenIsUlid方法在字符串是有效的 ULID 时调用给定的闭包。该闭包将接收链式字符串实例:
use Illuminate\Support\Str;
$string = Str::of('01gd6r360bp37zj17nxb55yv40')->whenIsUlid(function (Stringable $string) {
return $string->substr(0, 8);
});
// '01gd6r36'whenIsUuid该 whenIsUuid 方法调用给定的闭包,如果该字符串是一个有效的 UUID。该闭包将接收流畅字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->whenIsUuid(function (Stringable $string) {
return $string->substr(0, 8);
});
// 'a0a2a2d2'whenTest该 whenTest 方法调用给定的闭包,如果字符串匹配给定的正则表达式。闭包将接收流式字符串实例:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('laravel framework')->whenTest('/laravel/', function (Stringable $string) {
return $string->title();
});
// 'Laravel Framework'wordCount该 wordCount 方法返回字符串包含的单词数量:
use Illuminate\Support\Str;
Str::of('Hello, world!')->wordCount(); // 2词语该 words 方法限制了字符串中的单词数量。如有必要,您可以指定一个附加字符串,该字符串将附加到被截断的字符串后面:
use Illuminate\Support\Str;
$string = Str::of('Perfectly balanced, as all things should be.')->words(3, ' >>>');
// Perfectly balanced, as >>>包裹wrap 方法用一个额外的字符串或一对字符串包裹给定字符串:
use Illuminate\Support\Str;
Str::of('Laravel')->wrap('"');
// "Laravel"
Str::is('is')->wrap(before: 'This ', after: ' Laravel!');
// This is Laravel!