Строки
Введение
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::upper
- Str::ulid
- Str::unwrap
- Str::uuid
- Str::uuid7
- Str::wordCount
- Str::wordWrap
- Str::words
- Str::wrap
- str
- trans
- trans_choice
Строки Fluent
- after
- afterLast
- apa
- append
- ascii
- basename
- before
- beforeLast
- between
- betweenFirst
- camel
- charAt
- classBasename
- chopStart
- chopEnd
- contains
- containsAll
- decrypt
- deduplicate
- dirname
- 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
- unwrap
- upper
- when
- whenContains
- whenContainsAll
- whenDoesntEndWith
- whenDoesntStartWith
- whenEmpty
- whenNotEmpty
- whenStartsWith
- whenEndsWith
- whenExactly
- whenNotExactly
- whenIs
- whenIsAscii
- whenIsUlid
- whenIsUuid
- whenTest
- wordCount
- words
- wrap
Строки
__()
Функция __ переводит переданную строку перевода или ключ перевода, используя ваши файлы локализации:
echo __('Welcome to our application');
echo __('messages.welcome');
Если указанная строка перевода или ключ не существует, то функция __ вернет переданное значение. Итак, используя приведенный выше пример, функция __ вернет messages.welcome, если этот ключ перевода не существует.
class_basename()
Функция class_basename возвращает имя переданного класса с удаленным пространством имен этого класса:
$class = class_basename('Foo\Bar\Baz');
// Baz
e()
Функция e запускает PHP-функцию htmlspecialchars с параметром double_encode, установленным по умолчанию в true:
echo e('<html>foo</html>');
// <html>foo</html>
preg_replace_array()
Функция preg_replace_array последовательно заменяет переданный шаблон в строке, используя массив:
$string = 'The event will take place between :start and :end';
$replaced = preg_replace_array('/:[a-z_]+/', ['8:30', '9:00'], $string);
// The event will take place between 8:30 and 9:00
Str::after()
Метод Str::after возвращает все после переданного значения в строке. Если значение не существует в строке, то будет возвращена вся строка:
use Illuminate\Support\Str;
$slice = Str::after('This is my name', 'This is');
// ' my name'
Str::afterLast()
Метод Str::afterLast возвращает все после последнего вхождения переданного значения в строке. Если значение не существует в строке, то будет возвращена вся строка:
use Illuminate\Support\Str;
$slice = Str::afterLast('App\Http\Controllers\Controller', '\\');
// 'Controller'
Str::apa()
Метод Str::apa преобразует заданную строку в Title Case в соответствии с правилами 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);
// true
Str::containsAll()
Метод Str::containsAll определяет, содержит ли переданная строка все значения массива:
use Illuminate\Support\Str;
$containsAll = Str::containsAll('This is my name', ['my', 'name']);
// true
Вы можете отключить чувствительность к регистру, установив для аргумента ignoreCase значение true:
use Illuminate\Support\Str;
$containsAll = Str::containsAll('This is my name', ['MY', 'NAME'], ignoreCase: true);
// true
Str::doesntContain()
Метод Str::doesntContain определяет, не содержит ли данная строка заданное значение. По умолчанию этот метод чувствителен к регистру:
use Illuminate\Support\Str;
$doesntContain = Str::doesntContain('This is name', 'my');
// true
Вы также можете передать массив значений, чтобы определить, не содержит ли данная строка каких-либо значений в массиве:
use Illuminate\Support\Str;
$doesntContain = Str::doesntContain('This is name', ['my', 'foo']);
// true
Вы можете отключить чувствительность к регистру, установив для аргумента ignoreCase значение true:
use Illuminate\Support\Str;
$doesntContain = Str::doesntContain('This is name', 'MY', ignoreCase: true);
// true
Str::deduplicate()
Метод Str::deduplicate заменяет последовательные экземпляры символа единственным экземпляром этого символа в данной строке. По умолчанию метод дедуплицирует пробелы:
use Illuminate\Support\Str;
$result = Str::deduplicate('The Laravel Framework');
// The Laravel Framework
Вы можете указать другой символ для дедупликации, передав его в качестве второго аргумента метода:
use Illuminate\Support\Str;
$result = Str::deduplicate('The---Laravel---Framework', '-');
// The-Laravel-Framework
Str::doesntEndWith()
Метод Str::doesntEndWith определяет, не заканчивается ли заданная строка заданным значением:
use Illuminate\Support\Str;
$result = Str::doesntEndWith('This is my name', 'dog');
// true
Вы также можете передать массив значений, чтобы определить, не заканчивается ли заданная строка каким-либо значением из массива:
use Illuminate\Support\Str;
$result = Str::doesntEndWith('This is my name', ['this', 'foo']);
// true
$result = Str::doesntEndWith('This is my name', ['name', 'foo']);
// false
Str::doesntStartWith()
Метод Str::doesntStartWith определяет, не начинается ли заданная строка с заданного значения:
use Illuminate\Support\Str;
$result = Str::doesntStartWith('This is my name', 'That');
// true
Если передан массив возможных значений, метод doesntStartWith вернет true, если строка не начинается ни с одного из заданных значений:
$result = Str::doesntStartWith('This is my name', ['What', 'That', 'There']);
// true
Str::endsWith()
Метод Str::endsWith определяет, заканчивается ли переданная строка указанным значением:
use Illuminate\Support\Str;
$result = Str::endsWith('This is my name', 'name');
// true
Вы также можете указать массив значений, чтобы определить, заканчивается ли переданная строка каким-либо из значений:
use Illuminate\Support\Str;
$result = Str::endsWith('This is my name', ['name', 'foo']);
// true
$result = Str::endsWith('This is my name', ['this', 'foo']);
// false
Str::excerpt()
Метод Str::excerpt извлекает отрывок из заданной строки, соответствующий первому вхождению фразы в эту строку:
use Illuminate\Support\Str;
$excerpt = Str::excerpt('This is my name', 'my', [
'radius' => 3
]);
// '...is my na...'
Опция radius, по умолчанию равная 100, позволяет определить количество символов, которые должны появиться с каждой стороны усеченной строки.
Кроме того, вы можете использовать опцию omission, чтобы определить строку, которая будет добавлена перед и после усеченной строки:
use Illuminate\Support\Str;
$excerpt = Str::excerpt('This is my name', 'name', [
'radius' => 3,
'omission' => '(...) '
]);
// '(...) my name'
Str::finish()
Метод Str::finish добавляет один экземпляр указанного значения в переданную строку, если она еще не заканчивается этим значением:
use Illuminate\Support\Str;
$adjusted = Str::finish('this/string', '/');
// this/string/
$adjusted = Str::finish('this/string/', '/');
// this/string/
Str::fromBase64()
Метод Str::fromBase64 декодирует заданную строку Base64:
use Illuminate\Support\Str;
$decoded = Str::fromBase64('TGFyYXZlbA==');
// Laravel
Str::headline()
Метод Str::headline преобразует строки, разделенные регистром, дефисами или подчеркиванием, в строку, разделенную пробелами, с заглавной первой буквой каждого слова:
use Illuminate\Support\Str;
$headline = Str::headline('steve_jobs');
// Steve Jobs
$headline = Str::headline('EmailNotificationSent');
// Email Notification Sent
Str::inlineMarkdown()
Метод Str::inlineMarkdown преобразует Markdown в стиле GitHub в HTML в одну строку с использованием CommonMark. Однако, в отличие от метода markdown, он не оборачивает весь сгенерированный HTML в блочный элемент:
use Illuminate\Support\Str;
$html = Str::inlineMarkdown('**Laravel**');
// <strong>Laravel</strong>
Безопасность в Markdown
По умолчанию Markdown позволяет использовать HTML, что может привести к уязвимостям XSS (межсайтовый скриптинг), если использовать его с необработанным пользовательским вводом. Согласно документации по безопасности CommonMark, вы можете использовать опцию html_input для экранирования или удаления сырого HTML, а также опцию allow_unsafe_links для указания разрешения на небезопасные ссылки. Если вам нужно разрешить некоторый сырой HTML, следует пропустить скомпилированный Markdown через сторонние библиотеки, такие как HTML Purifier:
use Illuminate\Support\Str;
Str::inlineMarkdown('Inject: <script>alert("Hello XSS!");</script>', [
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// Inject: alert("Hello XSS!");
Str::is()
Метод Str::is определяет, соответствует ли переданная строка указанному шаблону. Допускается использование метасимвола подстановки *:
use Illuminate\Support\Str;
$matches = Str::is('foo*', 'foobar');
// true
$matches = Str::is('baz*', 'foobar');
// false
Вы можете отключить чувствительность к регистру, установив для аргумента ignoreCase значение true:
use Illuminate\Support\Str;
$matches = Str::is('*.jpg', 'photo.JPG', ignoreCase: true);
// true
Str::isAscii()
Метод Str::isAscii определяет, является ли переданная строка 7-битной ASCII:
use Illuminate\Support\Str;
$isAscii = Str::isAscii('Taylor');
// true
$isAscii = Str::isAscii('ü');
// false
Str::isJson()
Метод Str::isJson определяет, является ли заданная строка допустимым JSON:
use Illuminate\Support\Str;
$result = Str::isJson('[1,2,3]');
// true
$result = Str::isJson('{"first": "John", "last": "Doe"}');
// true
$result = Str::isJson('{first: "John", last: "Doe"}');
// false
Str::isUrl()
Метод Str::isUrl определяет, является ли заданная строка допустимым URL:
use Illuminate\Support\Str;
$isUrl = Str::isUrl('http://example.com');
// true
$isUrl = Str::isUrl('laravel');
// false
Метод isUrl считает широкий спектр протоколов допустимыми. Тем не менее, вы можете указать протоколы, которые должны считаться допустимыми, передав их методу isUrl:
$isUrl = Str::isUrl('http://example.com', ['http', 'https']);
Str::isUlid()
Метод Str::isUlid определяет, является ли заданная строка допустимым ULID:
use Illuminate\Support\Str;
$isUlid = Str::isUlid('01gd6r360bp37zj17nxb55yv40');
// true
$isUlid = Str::isUlid('laravel');
// false
Str::isUuid()
Метод Str::isUuid определяет, является ли заданная строка допустимым UUID:
use Illuminate\Support\Str;
$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');
// true
$isUuid = Str::isUuid('laravel');
// false
Вы также можете проверить, соответствует ли заданный UUID спецификации UUID по версии (1, 3, 4, 5, 6, 7 или 8):
use Illuminate\Support\Str;
$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de', version: 4);
// true
$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de', version: 1);
// false
Str::kebab()
Метод Str::kebab преобразует переданную строку в kebab-case:
use Illuminate\Support\Str;
$converted = Str::kebab('fooBar');
// foo-bar
Str::lcfirst()
Метод Str::lcfirst возвращает переданную строку с первым символом в нижнем регистре:
use Illuminate\Support\Str;
$string = Str::lcfirst('Foo Bar');
// foo Bar
Str::length()
Метод Str::length возвращает длину переданной строки:
use Illuminate\Support\Str;
$length = Str::length('Laravel');
// 7
Str::limit()
Метод Str::limit усекает переданную строку до указанной длины:
use Illuminate\Support\Str;
$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20);
// The quick brown fox...
Вы также можете передать третий строковый аргумент, содержимое которого будет добавлено в конец:
$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20, ' (...)');
// The quick brown fox (...)
Если вы хотите сохранить полные слова при усечении строки, вы можете использовать аргумент preserveWords. Если этот аргумент имеет значение true, строка будет обрезана до ближайшей полной границы слова:
$truncated = Str::limit('The quick brown fox', 12, preserveWords: true);
// The quick...
Str::lower()
Метод Str::lower преобразует переданную строку в нижний регистр:
use Illuminate\Support\Str;
$converted = Str::lower('LARAVEL');
// laravel
Str::markdown()
Метод Str::markdown конвертирует текст с разметкой GitHub flavored Markdown в HTML:
use Illuminate\Support\Str;
$html = Str::markdown('# Laravel');
// <h1>Laravel</h1>
$html = Str::markdown('# Taylor <b>Otwell</b>', [
'html_input' => 'strip',
]);
// <h1>Taylor Otwell</h1>
Безопасность markdown
По умолчанию Markdown поддерживает необработанный HTML, который обнажает уязвимости межсайтового скриптинга (XSS) при использовании с необработанным пользовательским вводом. Согласно документации по безопасности CommonMark, вы можете использовать параметр html_input для экранирования или удаления необработанного HTML-кода, а также параметр allow_unsafe_links, чтобы указать, разрешать ли небезопасные ссылки. Если вам нужно разрешить некоторый необработанный HTML, вам следует передать скомпилированный Markdown через HTML Purifier:
use Illuminate\Support\Str;
Str::markdown('Inject: <script>alert("Hello XSS!");</script>', [
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// <p>Inject: alert("Hello XSS!");</p>
Str::mask()
Метод Str::mask маскирует часть строки повторяющимся символом и может использоваться для обфускации сегментов строк, таких как адреса электронной почты и номера телефонов:
use Illuminate\Support\Str;
$string = Str::mask('taylor@example.com', '*', 3);
// tay***************
При необходимости вы можете указать отрицательное число в качестве третьего аргумента метода mask, который даст указание методу начать маскировку на заданном расстоянии от конца строки:
$string = Str::mask('taylor@example.com', '*', -15, 3);
// tay***@example.com
Str::match()
Метод Str::match вернет часть строки, соответствующую заданному шаблону регулярного выражения:
use Illuminate\Support\Str;
$result = Str::match('/bar/', 'foo bar');
// 'bar'
$result = Str::match('/foo (.*)/', 'foo bar');
// 'bar'
Str::matchAll()
Метод Str::matchAll вернет коллекцию, содержащую части строки, соответствующие заданному шаблону регулярного выражения:
use Illuminate\Support\Str;
$result = Str::matchAll('/bar/', 'bar foo bar');
// collect(['bar', 'bar'])
Если указать соответствующую группу в выражении, 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 оборачивает функцию str_pad PHP, заполняя обе стороны строки другой строкой, пока конечная строка не достигнет желаемой длины:
use Illuminate\Support\Str;
$padded = Str::padBoth('James', 10, '_');
// '__James___'
$padded = Str::padBoth('James', 10);
// ' James '
Str::padLeft()
Метод Str::padLeft оборачивает функцию str_pad PHP, заполняя левую часть строки другой строкой, пока конечная строка не достигнет желаемой длины:
use Illuminate\Support\Str;
$padded = Str::padLeft('James', 10, '-=');
// '-=-=-James'
$padded = Str::padLeft('James', 10);
// ' James'
Str::padRight()
Метод Str::padRight оборачивает функцию str_pad PHP, заполняя правую часть строки другой строкой, пока конечная строка не достигнет желаемой длины:
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
Str::pluralStudly()
Метод Str::pluralStudly преобразует строку единственного слова, отформатированную в заглавном регистре studly, в форму множественного числа. Эта функция поддерживает любой из языков, поддерживаемых плюрализатором Laravel:
use Illuminate\Support\Str;
$plural = Str::pluralStudly('VerifiedHuman');
// VerifiedHumans
$plural = Str::pluralStudly('UserFeedback');
// UserFeedback
Вы можете передать целое число в качестве второго аргумента метода для получения строки в единственном или множественном числе:
use Illuminate\Support\Str;
$plural = Str::pluralStudly('VerifiedHuman', 2);
// VerifiedHumans
$singular = Str::pluralStudly('VerifiedHuman', 1);
// VerifiedHuman
Str::position()
Метод Str::position возвращает позицию первого вхождения подстроки в строке. Если подстрока не существует в данной строке, возвращается значение false:
use Illuminate\Support\Str;
$position = Str::position('Hello, World!', 'Hello');
// 0
$position = Str::position('Hello, World!', 'W');
// 7
Str::random()
Метод Str::random генерирует случайную строку указанной длины. Этот метод использует функцию random_bytes PHP:
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 в качестве третьего аргумента для игнорирования регистра удаляемых подстрок.
Str::repeat()
Метод Str::repeat повторяет заданную строку:
use Illuminate\Support\Str;
$string = 'a';
$repeat = Str::repeat($string, 5);
// aaaaa
Str::replace()
Метод Str::replace заменяет в строке одну подстроку другой:
use Illuminate\Support\Str;
$string = 'Laravel 11.x';
$replaced = Str::replace('11.x', '12.x', $string);
// Laravel 12.x
Метод replace также принимает аргумент caseSensitive. По умолчанию метод replace чувствителен к регистру:
$replaced = Str::replace(
'php',
'Laravel',
'PHP Framework for Web Artisans',
caseSensitive: false
);
// Laravel Framework for Web Artisans
Str::replaceArray()
Метод Str::replaceArray последовательно заменяет указанное значение в строке, используя массив:
use Illuminate\Support\Str;
$string = 'The event will take place between ? and ?';
$replaced = Str::replaceArray('?', ['8:30', '9:00'], $string);
// The event will take place between 8:30 and 9:00
Str::replaceFirst()
Метод Str::replaceFirst заменяет первое вхождение переданного значения в строке:
use Illuminate\Support\Str;
$replaced = Str::replaceFirst('the', 'a', 'the quick brown fox jumps over the lazy dog');
// a quick brown fox jumps over the lazy dog
Str::replaceLast()
Метод Str::replaceLast заменяет последнее вхождение переданного значения в строке:
use Illuminate\Support\Str;
$replaced = Str::replaceLast('the', 'a', 'the quick brown fox jumps over the lazy dog');
// the quick brown fox jumps over a lazy dog
Str::replaceMatches()
Метод Str::replaceMatches заменяет все части строки, соответствующие шаблону, заданной строкой замены:
use Illuminate\Support\Str;
$replaced = Str::replaceMatches(
pattern: '/[^A-Za-z0-9]++/',
replace: '',
subject: '(+1) 501-555-1000'
)
// '15015551000'
Метод replaceMatches также принимает замыкание, которое будет вызвано для каждой части строки, соответствующей заданному шаблону, что позволяет вам выполнять логику замены внутри замыкания и возвращать замененное значение:
use Illuminate\Support\Str;
$replaced = Str::replaceMatches('/\d/', function (array $matches) {
return '['.$matches[0].']';
}, '123');
// '[1][2][3]'
Str::replaceStart()
Метод Str::replaceStart заменяет только первое вхождение заданного значения, если значение появляется в начале строки:
use Illuminate\Support\Str;
$replaced = Str::replaceStart('Hello', 'Laravel', 'Hello World');
// Laravel World
$replaced = Str::replaceStart('World', 'Laravel', 'Hello World');
// Hello World
Str::replaceEnd()
Метод Str::replaceEnd заменяет только последнее вхождение заданного значения, если значение появляется в конце строки:
use Illuminate\Support\Str;
$replaced = Str::replaceEnd('World', 'Laravel', 'Hello World');
// Hello Laravel
$replaced = Str::replaceEnd('Hello', 'Laravel', 'Hello World');
// Hello World
Str::reverse()
Метод Str::reverse переворачивает данную строку:
use Illuminate\Support\Str;
$reversed = Str::reverse('Hello World');
// dlroW olleH
Str::singular()
Метод Str::singular преобразует строку в ее форму единственного числа. Эта функция поддерживает любые из языков, поддерживаемых плюрализатором Laravel:
use Illuminate\Support\Str;
$singular = Str::singular('cars');
// car
$singular = Str::singular('children');
// child
Str::slug()
Метод Str::slug создает «дружественный фрагмент» URL-адреса из переданной строки:
use Illuminate\Support\Str;
$slug = Str::slug('Laravel 5 Framework', '-');
// laravel-5-framework
Str::snake()
Метод Str::snake преобразует переданную строку в snake_case:
use Illuminate\Support\Str;
$converted = Str::snake('fooBar');
// foo_bar
$converted = Str::snake('fooBar', '-');
// foo-bar
Str::squish()
Метод Str::squish удаляет все лишние пробелы из строки, включая лишние пробелы между словами:
use Illuminate\Support\Str;
$string = Str::squish(' laravel framework ');
// laravel framework
Str::start()
Метод Str::start добавляет один экземпляр указанного значения в переданную строку, если она еще не начинается этим значением:
use Illuminate\Support\Str;
$adjusted = Str::start('this/string', '/');
// /this/string
$adjusted = Str::start('/this/string', '/');
// /this/string
Str::startsWith()
Метод Str::startsWith определяет, начинается ли переданная строка с указанного значения:
use Illuminate\Support\Str;
$result = Str::startsWith('This is my name', 'This');
// true
Если передан массив возможных значений, метод startsWith вернет true, если строка начинается с любого из заданных значений:
$result = Str::startsWith('This is my name', ['This', 'That', 'There']);
// true
Str::studly()
Метод Str::studly преобразует переданную строку в StudlyCase:
use Illuminate\Support\Str;
$converted = Str::studly('foo_bar');
// FooBar
Str::substr()
Метод Str::substr возвращает часть строки, заданную параметрами «начало» и «длина»:
use Illuminate\Support\Str;
$converted = Str::substr('The Laravel Framework', 4, 7);
// Laravel
Str::substrCount()
Метод Str::substrCount возвращает число вхождений подстроки в строку:
use Illuminate\Support\Str;
$count = Str::substrCount('If you like ice cream, you will like snow cones.', 'like');
// 2
Str::substrReplace()
Метод Str::substrReplace заменяет текст в части строки, начиная с позиции, указанной третьим аргументом, и заменяет число символов, указанное четвертым аргументом. Передав 0 четвертым аргументом в метод, строка будет вставлена в указанную позицию без замены каких-либо существующих символов в строке:
use Illuminate\Support\Str;
$result = Str::substrReplace('1300', ':', 2);
// 13:
$result = Str::substrReplace('1300', ':', 2, 0);
// 13:00
Str::swap()
Метод Str::swap заменяет несколько значений в заданной строке, используя функцию strtr PHP:
use Illuminate\Support\Str;
$string = Str::swap([
'Tacos' => 'Burritos',
'great' => 'fantastic',
], 'Tacos are great!');
// Burritos are fantastic!
Str::take()
Метод Str::take возвращает указанное количество символов из начала строки:
use Illuminate\Support\Str;
$taken = Str::take('Build something amazing!', 5);
// Build
Str::title()
Метод Str::title преобразует переданную строку в Title Case:
use Illuminate\Support\Str;
$converted = Str::title('a nice title uses the correct case');
// A Nice Title Uses The Correct Case
Str::toBase64() {.collection-method}
Метод Str::toBase64 преобразует переданную строку в Base64:
use Illuminate\Support\Str;
$base64 = Str::toBase64('Laravel');
// TGFyYXZlbA==
Str::transliterate()
Метод Str::transliterate попытается преобразовать данную строку в ее ближайшее представление ASCII:
use Illuminate\Support\Str;
$email = Str::transliterate('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ');
// 'test@laravel.com'
Str::trim() {.collection-method}
Метод Str::trim удаляет пробелы (или другие символы) из начала и конца заданной строки. В отличие от встроенной функции PHP trim, метод Str::trim также удаляет пробельные символы Юникода:
use Illuminate\Support\Str;
$string = Str::trim(' foo bar ');
// 'foo bar'
Str::ltrim() {.collection-method}
Метод Str::ltrim удаляет пробелы (или другие символы) с начала заданной строки. В отличие от встроенной функции PHP ltrim, метод Str::ltrim также удаляет пробельные символы Юникода:
use Illuminate\Support\Str;
$string = Str::ltrim(' foo bar ');
// 'foo bar '
Str::rtrim() {.collection-method}
Метод Str::rtrim удаляет пробелы (или другие символы) с конца заданной строки. В отличие от встроенной функции PHP rtrim, метод Str::rtrim также удаляет пробельные символы Юникода:
use Illuminate\Support\Str;
$string = Str::rtrim(' foo bar ');
// ' foo bar'
Str::ucfirst()
Метод Str::ucfirst возвращает переданную строку с первой заглавной буквой:
use Illuminate\Support\Str;
$string = Str::ucfirst('foo bar');
// Foo bar
Str::ucsplit()
Метод Str::ucsplit разделяет заданную строку на массив по символам в верхнем регистре:
use Illuminate\Support\Str;
$segments = Str::ucsplit('FooBar');
// [0 => 'Foo', 1 => 'Bar']
Str::upper()
Метод Str::upper преобразует переданную строку в верхний регистр:
use Illuminate\Support\Str;
$string = Str::upper('laravel');
// LARAVEL
Str::ulid()
Метод Str::ulid генерирует ULID, который является компактным, уникальным и упорядоченным по времени идентификатором:
use Illuminate\Support\Str;
return (string) Str::ulid();
// 01gd6r360bp37zj17nxb55yv40
Если вы хотите получить экземпляр даты Illuminate\Support\Carbon, представляющий дату и время создания заданного ULID, вы можете использовать метод createFromId, предоставленный интеграцией Carbon в Laravel:
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');
});
Чтобы дать указание методу ulid вернуться к нормальной генерации ULID, вы можете вызвать метод createUlidsNormally:
Str::createUlidsNormally();
Str::unwrap()
Метод Str::unwrap удаляет указанные строки из начала и конца заданной строки:
use Illuminate\Support\Str;
Str::unwrap('-Laravel-', '-');
// Laravel
Str::unwrap('{framework: "Laravel"}', '{', '}');
// framework: "Laravel"
Str::uuid()
Метод Str::uuid генерирует UUID (версия 4):
use Illuminate\Support\Str;
return (string) Str::uuid();
Во время тестирования может оказаться полезным «подделать» значение, возвращаемое методом Str::uuid. Для этого вы можете использовать метод createUuidsUsing:
use Ramsey\Uuid\Uuid;
Str::createUuidsUsing(function () {
return Uuid::fromString('eadbfeac-5258-45c2-bab7-ccb9b5ef74f9');
});
Чтобы дать указание методу uuid вернуться к обычному генерированию UUID, вы можете вызвать метод createUuidsNormally:
Str::createUuidsNormally();
Str::uuid7()
Метод Str::uuid7 генерирует UUID (версия 7):
use Illuminate\Support\Str;
return (string) Str::uuid7();
DateTimeInterface может быть передан как необязательный параметр, который будет использоваться для генерации упорядоченного UUID:
return (string) Str::uuid7(time: now());
Str::wordCount()
Метод Str::wordCount возвращает число слов в строке:
use Illuminate\Support\Str;
Str::wordCount('Hello, world!'); // 2
Str::wordWrap()
Метод Str::wordWrap переносит строку по заданному количеству символов:
use Illuminate\Support\Str;
$text = "The quick brown fox jumped over the lazy dog."
Str::wordWrap($text, characters: 20, break: "<br />\n");
/*
The quick brown fox<br />
jumped over the lazy<br />
dog.
*/
Str::words()
Метод Str::words ограничивает количество слов в строке. Дополнительная строка может быть передана этому методу через его третий аргумент, чтобы указать, какая строка должна быть добавлена в конец усеченной строки:
use Illuminate\Support\Str;
return Str::words('Perfectly balanced, as all things should be.', 3, ' >>>');
// Perfectly balanced, as >>>
Str::wrap()
Метод Str::wrap оборачивает заданную строку дополнительной строкой или парой строк:
use Illuminate\Support\Str;
Str::wrap('Laravel', '"');
// "Laravel"
Str::wrap('is', before: 'This ', after: ' Laravel!');
// This is Laravel!
str()
Функция str возвращает новый экземпляр Illuminate\Support\Stringable для заданной строки. Эта функция эквивалентна методу Str::of:
$string = str('Taylor')->append(' Otwell');
// 'Taylor Otwell'
Если функции str не передается аргумент, она возвращает экземпляр Illuminate\Support\Str:
$snake = str()->snake('FooBar');
// 'foo_bar'
trans()
Функция trans переводит переданный ключ перевода, используя ваши файлы локализации:
echo trans('messages.welcome');
Если указанный ключ перевода не существует, функция trans вернет данный ключ. Итак, используя приведенный выше пример, функция trans вернет messages.welcome, если ключ перевода не существует.
trans_choice()
Функция trans_choice переводит заданный ключ перевода с изменением формы слова:
echo trans_choice('messages.notifications', $unreadCount);
Если указанный ключ перевода не существует, функция trans_choice вернет данный ключ. Итак, используя приведенный выше пример, функция trans_choice вернет messages.notifications, если ключ перевода не существует.
Строки Fluent
Строки Fluent обеспечивают более гибкий объектно-ориентированный интерфейс для работы со строковыми значениями, позволяя объединять несколько строковых операций вместе с использованием более удобочитаемого синтаксиса по сравнению с традиционными строковыми операциями.
after
Метод after возвращает все после переданного значения в строке. Вся строка будет возвращена, если значение не существует в строке:
use Illuminate\Support\Str;
$slice = Str::of('This is my name')->after('This is');
// ' my name'
afterLast
Метод afterLast возвращает все после последнего вхождения переданного значения в строке. Вся строка будет возвращена, если значение не существует в строке:
use Illuminate\Support\Str;
$slice = Str::of('App\Http\Controllers\Controller')->afterLast('\\');
// 'Controller'
apa
Метод apa преобразует заданную строку в Title Case в соответствии с правилами APA:
use Illuminate\Support\Str;
$converted = Str::of('a nice title uses the correct case')->apa();
// A Nice Title Uses the Correct Case
append
Метод append добавляет указанные значения в строку:
use Illuminate\Support\Str;
$string = Str::of('Taylor')->append(' Otwell');
// 'Taylor Otwell'
ascii
Метод ascii попытается транслитерировать строку в значение ASCII:
use Illuminate\Support\Str;
$string = Str::of('ü')->ascii();
// 'u'
basename
Метод basename вернет завершающий компонент имени переданной строки:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz')->basename();
// 'baz'
При необходимости вы можете указать «расширение», которое будет удалено из завершающего компонента:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz.jpg')->basename('.jpg');
// 'baz'
before
Метод before возвращает все до указанного значения в строке:
use Illuminate\Support\Str;
$slice = Str::of('This is my name')->before('my name');
// 'This is '
beforeLast
Метод beforeLast возвращает все до последнего вхождения переданного значения в строку:
use Illuminate\Support\Str;
$slice = Str::of('This is my name')->beforeLast('is');
// 'This '
between
Метод between возвращает часть строки между двумя значениями:
use Illuminate\Support\Str;
$converted = Str::of('This is my name')->between('This', 'name');
// ' is my '
betweenFirst
Метод betweenFirst возвращает наименьший возможный участок строки между двумя значениями:
use Illuminate\Support\Str;
$converted = Str::of('[a] bc [d]')->betweenFirst('[', ']');
// 'a'
camel
Метод camel преобразует переданную строку в camelCase:
use Illuminate\Support\Str;
$converted = Str::of('foo_bar')->camel();
// 'fooBar'
charAt
Метод charAt возвращает символ по указанному индексу. Если индекс выходит за границы, возвращается значение false:
use Illuminate\Support\Str;
$character = Str::of('This is my name.')->charAt(6);
// 's'
classBasename
Метод classBasename возвращает имя класса без пространства имен:
use Illuminate\Support\Str;
$class = Str::of('Foo\Bar\Baz')->classBasename();
// 'Baz'
chopStart
Метод chopStart удаляет первое вхождение данного значения, только если значение появляется в начале строки:
use Illuminate\Support\Str;
$url = Str::of('https://laravel.com')->chopStart('https://');
// 'laravel.com'
Вы также можете передать массив. Если строка начинается с любого значения в массиве, это значение будет удалено из строки:
use Illuminate\Support\Str;
$url = Str::of('http://laravel.com')->chopStart(['https://', 'http://']);
// 'laravel.com'
chopEnd
Метод chopEnd удаляет последнее вхождение данного значения, только если значение появляется в конце строки:
use Illuminate\Support\Str;
$url = Str::of('https://laravel.com')->chopEnd('.com');
// 'https://laravel'
Вы также можете передать массив. Если строка заканчивается любым из значений массива, это значение будет удалено из строки:
use Illuminate\Support\Str;
$url = Str::of('http://laravel.com')->chopEnd(['.com', '.io']);
// 'http://laravel'
contains
Метод contains определяет, содержит ли переданная строка указанное значение. По умолчанию этот метод чувствителен к регистру:
use Illuminate\Support\Str;
$contains = Str::of('This is my name')->contains('my');
// true
Вы также можете указать массив значений, чтобы определить, содержит ли переданная строка какое-либо из этих значений:
use Illuminate\Support\Str;
$contains = Str::of('This is my name')->contains(['my', 'foo']);
// true
Вы можете отключить чувствительность к регистру, установив для аргумента ignoreCase значение true:
use Illuminate\Support\Str;
$contains = Str::of('This is my name')->contains('MY', ignoreCase: true);
// true
containsAll
Метод containsAll определяет, содержит ли переданная строка все значения массива:
use Illuminate\Support\Str;
$containsAll = Str::of('This is my name')->containsAll(['my', 'name']);
// true
Вы можете отключить чувствительность к регистру, установив для аргумента ignoreCase значение true:
use Illuminate\Support\Str;
$containsAll = Str::of('This is my name')->containsAll(['MY', 'NAME'], ignoreCase: true);
// true
decrypt
Метод decrypt расшифровывает зашифрованную строку:
use Illuminate\Support\Str;
$decrypted = $encrypted->decrypt();
// 'secret'
Обратный метод decrypt см. в описании метода encrypt.
deduplicate
Метод deduplicate заменяет последовательные экземпляры символа единственным экземпляром этого символа в данной строке. По умолчанию метод дедуплицирует пробелы:
use Illuminate\Support\Str;
$result = Str::of('The Laravel Framework')->deduplicate();
// The Laravel Framework
Вы можете указать другой символ для дедупликации, передав его в качестве второго аргумента метода:
use Illuminate\Support\Str;
$result = Str::of('The---Laravel---Framework')->deduplicate('-');
// The-Laravel-Framework
dirname
Метод dirname возвращает родительскую часть директории переданной строки:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz')->dirname();
// '/foo/bar'
При желании вы можете указать, сколько уровней каталогов вы хотите вырезать из строки:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz')->dirname(2);
// '/foo'
doesntEndWith
Метод doesntEndWith определяет, не заканчивается ли заданная строка заданным значением:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->doesntEndWith('dog');
// true
Вы также можете передать массив значений, чтобы определить, не заканчивается ли заданная строка каким-либо значением из массива:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->doesntEndWith(['this', 'foo']);
// true
$result = Str::of('This is my name')->doesntEndWith(['name', 'foo']);
// false
doesntStartWith
Метод doesntStartWith определяет, не начинается ли заданная строка с заданного значения:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->doesntStartWith('That');
// true
Вы также можете передать массив значений, чтобы определить, не начинается ли заданная строка с какого-либо значения из массива:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->doesntStartWith(['What', 'That', 'There']);
// true
encrypt
Метод encrypt шифрует строку:
use Illuminate\Support\Str;
$encrypted = Str::of('secret')->encrypt();
Для обратного метода encrypt см. метод decrypt.
endsWith
Метод endsWith определяет, заканчивается ли переданная строка указанным значением:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->endsWith('name');
// true
Вы также можете указать массив значений, чтобы определить, заканчивается ли переданная строка каким-либо из указанных значений:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->endsWith(['name', 'foo']);
// true
$result = Str::of('This is my name')->endsWith(['this', 'foo']);
// false
exactly
Метод exactly определяет, является ли переданная строка точным совпадением с другой строкой:
use Illuminate\Support\Str;
$result = Str::of('Laravel')->exactly('Laravel');
// true
excerpt
Метод excerpt извлекает отрывок из заданной строки, соответствующий первому вхождению фразы в эту строку:
use Illuminate\Support\Str;
$excerpt = Str::of('This is my name')->excerpt('my', [
'radius' => 3
]);
// '...is my na...'
Опция radius, по умолчанию равная 100, позволяет определить количество символов, которые должны появиться с каждой стороны усеченной строки.
Кроме того, вы можете использовать опцию omission, чтобы определить строку, которая будет добавлена перед и после усеченной строки:
use Illuminate\Support\Str;
$excerpt = Str::of('This is my name')->excerpt('name', [
'radius' => 3,
'omission' => '(...) '
]);
// '(...) my name'
explode
Метод explode разделяет строку по заданному разделителю и возвращает коллекцию, содержащую каждый раздел строки разбиения:
use Illuminate\Support\Str;
$collection = Str::of('foo bar baz')->explode(' ');
// collect(['foo', 'bar', 'baz'])
finish
Метод finish добавляет один экземпляр указанного значения в переданную строку, если она еще не заканчивается этим значением:
use Illuminate\Support\Str;
$adjusted = Str::of('this/string')->finish('/');
// this/string/
$adjusted = Str::of('this/string/')->finish('/');
// this/string/
fromBase64
Метод fromBase64 декодирует заданную строку Base64:
use Illuminate\Support\Str;
$decoded = Str::of('TGFyYXZlbA==')->fromBase64();
// Laravel
hash
Метод hash хеширует строку, используя заданный алгоритм:
use Illuminate\Support\Str;
$hashed = Str::of('secret')->hash(algorithm: 'sha256');
// '2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b'
headline
Метод headline преобразует строки, разделенные регистром, дефисами или подчеркиваниями, в строку с пробелами, где первая буква каждого слова написана заглавной:
use Illuminate\Support\Str;
$headline = Str::of('taylor_otwell')->headline();
// Taylor Otwell
$headline = Str::of('EmailNotificationSent')->headline();
// Email Notification Sent
inlineMarkdown
Метод inlineMarkdown преобразует Markdown в стиле GitHub в HTML в одну строку с использованием CommonMark. Однако, в отличие от метода markdown, он не оборачивает весь сгенерированный HTML в блочный элемент:
use Illuminate\Support\Str;
$html = Str::of('**Laravel**')->inlineMarkdown();
// <strong>Laravel</strong>
Безопасность markdown
По умолчанию Markdown поддерживает необработанный HTML, который обнажает уязвимости межсайтового скриптинга (XSS) при использовании с необработанным пользовательским вводом. Согласно документации по безопасности CommonMark, вы можете использовать параметр html_input для экранирования или удаления необработанного HTML-кода, а также параметр allow_unsafe_links, чтобы указать, разрешать ли небезопасные ссылки. Если вам нужно разрешить некоторый необработанный HTML, вам следует передать скомпилированный Markdown через HTML Purifier:
use Illuminate\Support\Str;
Str::of('Inject: <script>alert("Hello XSS!");</script>')->inlineMarkdown([
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// Inject: alert("Hello XSS!");
is
Метод is определяет, соответствует ли переданная строка указанному шаблону. Допускается использование метасимвола подстановки *:
use Illuminate\Support\Str;
$matches = Str::of('foobar')->is('foo*');
// true
$matches = Str::of('foobar')->is('baz*');
// false
isAscii
Метод isAscii определяет, является ли переданная строка строкой ASCII:
use Illuminate\Support\Str;
$result = Str::of('Taylor')->isAscii();
// true
$result = Str::of('ü')->isAscii();
// false
isEmpty
Метод isEmpty определяет, является ли переданная строка пустой:
use Illuminate\Support\Str;
$result = Str::of(' ')->trim()->isEmpty();
// true
$result = Str::of('Laravel')->trim()->isEmpty();
// false
isNotEmpty
Метод isNotEmpty определяет, является ли переданная строка не пустой:
use Illuminate\Support\Str;
$result = Str::of(' ')->trim()->isNotEmpty();
// false
$result = Str::of('Laravel')->trim()->isNotEmpty();
// true
isJson
Метод isJson определяет, является ли заданная строка допустимым JSON:
use Illuminate\Support\Str;
$result = Str::of('[1,2,3]')->isJson();
// true
$result = Str::of('{"first": "John", "last": "Doe"}')->isJson();
// true
$result = Str::of('{first: "John", last: "Doe"}')->isJson();
// false
isUlid
Метод isUlid определяет, является ли заданная строка ULID:
use Illuminate\Support\Str;
$result = Str::of('01gd6r360bp37zj17nxb55yv40')->isUlid();
// true
$result = Str::of('Taylor')->isUlid();
// false
isUrl
Метод isUrl определяет, является ли заданная строка URL:
use Illuminate\Support\Str;
$result = Str::of('http://example.com')->isUrl();
// true
$result = Str::of('Taylor')->isUrl();
// false
Метод isUrl считает широкий спектр протоколов допустимыми. Тем не менее, вы можете указать протоколы, которые должны считаться допустимыми, передав их методу isUrl:
$result = Str::of('http://example.com')->isUrl(['http', 'https']);
isUuid
Метод isUuid определяет, является ли заданная строка UUID:
use Illuminate\Support\Str;
$result = Str::of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c')->isUuid();
// true
$result = Str::of('Taylor')->isUuid();
// false
Вы также можете проверить, соответствует ли заданный UUID спецификации UUID по версии (1, 3, 4, 5, 6, 7 или 8):
use Illuminate\Support\Str;
$isUuid = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->isUuid(version: 4);
// true
$isUuid = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->isUuid(version: 1);
// false
kebab
Метод kebab преобразует переданную строку в kebab-case:
use Illuminate\Support\Str;
$converted = Str::of('fooBar')->kebab();
// foo-bar
lcfirst
Метод lcfirst возвращает заданную строку с первым символом в нижнем регистре:
use Illuminate\Support\Str;
$string = Str::of('Foo Bar')->lcfirst();
// foo Bar
length
Метод length возвращает длину переданной строки:
use Illuminate\Support\Str;
$length = Str::of('Laravel')->length();
// 7
limit
Метод limit усекает переданную строку до указанной длины:
use Illuminate\Support\Str;
$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20);
// The quick brown fox...
Вы также можете передать второй строковый аргумент, содержимое которого будет добавлено в конец:
$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20, ' (...)');
// The quick brown fox (...)
Если вы хотите сохранить полные слова при усечении строки, вы можете использовать аргумент preserveWords. Если этот аргумент имеет значение true, строка будет обрезана до ближайшей полной границы слова:
$truncated = Str::of('The quick brown fox')->limit(12, preserveWords: true);
// The quick...
lower
Метод lower преобразует переданную строку в нижний регистр:
use Illuminate\Support\Str;
$result = Str::of('LARAVEL')->lower();
// 'laravel'
markdown
Метод markdown преобразует Markdown в стиле GitHub в HTML:
use Illuminate\Support\Str;
$html = Str::of('# Laravel')->markdown();
// <h1>Laravel</h1>
$html = Str::of('# Taylor <b>Otwell</b>')->markdown([
'html_input' => 'strip',
]);
// <h1>Taylor Otwell</h1>
Безопасность markdown
По умолчанию Markdown поддерживает необработанный HTML, который обнажает уязвимости межсайтового скриптинга (XSS) при использовании с необработанным пользовательским вводом. Согласно документации по безопасности CommonMark, вы можете использовать параметр html_input для экранирования или удаления необработанного HTML-кода, а также параметр allow_unsafe_links, чтобы указать, разрешать ли небезопасные ссылки. Если вам нужно разрешить некоторый необработанный HTML, вам следует передать скомпилированный Markdown через HTML Purifier:
use Illuminate\Support\Str;
Str::of('Inject: <script>alert("Hello XSS!");</script>')->markdown([
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// <p>Inject: alert("Hello XSS!");</p>
mask
Метод mask маскирует часть строки повторяющимся символом и может использоваться для обфускации сегментов строк, таких как адреса электронной почты и номера телефонов:
use Illuminate\Support\Str;
$string = Str::of('taylor@example.com')->mask('*', 3);
// tay***************
При необходимости вы указываете отрицательное число в качестве третьего аргумента метода mask, который даст указание методу начать маскировку на заданном расстоянии от конца строки:
$string = Str::of('taylor@example.com')->mask('*', -15, 3);
// tay***@example.com
$string = Str::of('taylor@example.com')->mask('*', 4, -4);
// tayl**********.com
match
Метод match вернет часть строки, которая соответствует указанному шаблону регулярного выражения:
use Illuminate\Support\Str;
$result = Str::of('foo bar')->match('/bar/');
// 'bar'
$result = Str::of('foo bar')->match('/foo (.*)/');
// 'bar'
matchAll
Метод matchAll вернет коллекцию, содержащую части строки, которые соответствуют указанному шаблону регулярного выражения:
use Illuminate\Support\Str;
$result = Str::of('bar foo bar')->matchAll('/bar/');
// collect(['bar', 'bar'])
Если вы укажете группировку в выражении, то Laravel вернет коллекцию совпадений первой группы соответствия:
use Illuminate\Support\Str;
$result = Str::of('bar fun bar fly')->matchAll('/f(\w*)/');
// collect(['un', 'ly']);
Если совпадений не найдено, будет возвращена пустая коллекция.
isMatch
Метод isMatch вернет true, если строка соответствует заданному регулярному выражению:
use Illuminate\Support\Str;
$result = Str::of('foo bar')->isMatch('/foo (.*)/');
// true
$result = Str::of('laravel')->isMatch('/foo (.*)/');
// false
newLine
Метод newLine добавляет символ “конец строки” к строке:
use Illuminate\Support\Str;
$padded = Str::of('Laravel')->newLine()->append('Framework');
// 'Laravel
// Framework'
padBoth
Метод padBoth оборачивает функцию str_pad PHP, заполняя обе стороны строки другой строкой, пока конечная строка не достигнет желаемой длины:
use Illuminate\Support\Str;
$padded = Str::of('James')->padBoth(10, '_');
// '__James___'
$padded = Str::of('James')->padBoth(10);
// ' James '
padLeft
Метод padLeft оборачивает функцию str_pad PHP, заполняя левую часть строки другой строкой, пока конечная строка не достигнет желаемой длины:
use Illuminate\Support\Str;
$padded = Str::of('James')->padLeft(10, '-=');
// '-=-=-James'
$padded = Str::of('James')->padLeft(10);
// ' James'
padRight
Метод padRight оборачивает функцию str_pad PHP, заполняя правую часть строки другой строкой, пока конечная строка не достигнет желаемой длины:
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
position
Метод position возвращает позицию первого вхождения подстроки в строку. Если подстрока не существует внутри строки, возвращается значение false:
use Illuminate\Support\Str;
$position = Str::of('Hello, World!')->position('Hello');
// 0
$position = Str::of('Hello, World!')->position('W');
// 7
prepend
Метод prepend добавляет указанные значения в начало строки:
use Illuminate\Support\Str;
$string = Str::of('Framework')->prepend('Laravel ');
// Laravel Framework
remove
Метод remove удаляет указанную подстроку или массив подстрок в строке:
use Illuminate\Support\Str;
$string = Str::of('Arkansas is quite beautiful!')->remove('quite');
// Arkansas is beautiful!
Вы можете передать false в качестве второго аргумента для игнорирования регистра удаляемых строк.
repeat
Метод repeat повторяет заданную строку:
use Illuminate\Support\Str;
$repeated = Str::of('a')->repeat(5);
// aaaaa
replace
Метод replace заменяет указанную строку внутри строки:
use Illuminate\Support\Str;
$replaced = Str::of('Laravel 6.x')->replace('6.x', '7.x');
// Laravel 7.x
Метод replace также принимает аргумент caseSensitive. По умолчанию метод replace чувствителен к регистру:
$replaced = Str::of('macOS 13.x')->replace(
'macOS', 'iOS', caseSensitive: false
);
replaceArray
Метод replaceArray последовательно заменяет указанное значение в строке, используя массив:
use Illuminate\Support\Str;
$string = 'The event will take place between ? and ?';
$replaced = Str::of($string)->replaceArray('?', ['8:30', '9:00']);
// The event will take place between 8:30 and 9:00
replaceFirst
Метод replaceFirst заменяет первое вхождение указанного значения в строке:
use Illuminate\Support\Str;
$replaced = Str::of('the quick brown fox jumps over the lazy dog')->replaceFirst('the', 'a');
// a quick brown fox jumps over the lazy dog
replaceLast
Метод replaceLast заменяет последнее вхождение указанного значения в строке:
use Illuminate\Support\Str;
$replaced = Str::of('the quick brown fox jumps over the lazy dog')->replaceLast('the', 'a');
// the quick brown fox jumps over a lazy dog
replaceMatches
Метод replaceMatches заменяет все части строки, соответствующие указанному шаблону, переданной строки:
use Illuminate\Support\Str;
$replaced = Str::of('(+1) 501-555-1000')->replaceMatches('/[^A-Za-z0-9]++/', '')
// '15015551000'
Метод replaceMatches также принимает замыкание, которое будет вызвано для каждой части строки, соответствующей шаблону, что позволяет вам выполнять логику замены в замыкании и возвращать замененное значение:
use Illuminate\Support\Str;
$replaced = Str::of('123')->replaceMatches('/\d/', function (array $matches) {
return '['.$matches[0].']';
});
// '[1][2][3]'
replaceStart
Метод replaceStart заменяет только первое вхождение заданного значения, если значение появляется в начале строки:
use Illuminate\Support\Str;
$replaced = Str::of('Hello World')->replaceStart('Hello', 'Laravel');
// Laravel World
$replaced = Str::of('Hello World')->replaceStart('World', 'Laravel');
// Hello World
replaceEnd
Метод replaceEnd заменяет только последнее вхождение заданного значения, если значение появляется в конце строки:
use Illuminate\Support\Str;
$replaced = Str::of('Hello World')->replaceEnd('World', 'Laravel');
// Hello Laravel
$replaced = Str::of('Hello World')->replaceEnd('Hello', 'Laravel');
// Hello World
scan
Метод scan анализирует входные данные из строки в коллекцию в соответствии с форматом, поддерживаемым sscanf функцией PHP:
use Illuminate\Support\Str;
$collection = Str::of('filename.jpg')->scan('%[^.].%s');
// collect(['filename', 'jpg'])
singular
Метод singular преобразует строку в ее форму единственного числа. Эта функция поддерживает любые из языков, поддерживаемых плюрализатором Laravel:
use Illuminate\Support\Str;
$singular = Str::of('cars')->singular();
// car
$singular = Str::of('children')->singular();
// child
slug
Метод slug создает «дружественный фрагмент» URL-адреса из переданной строки:
use Illuminate\Support\Str;
$slug = Str::of('Laravel Framework')->slug('-');
// laravel-framework
snake
Метод snake преобразует переданную строку в snake_case:
use Illuminate\Support\Str;
$converted = Str::of('fooBar')->snake();
// foo_bar
split
Метод split разбивает строку на коллекцию с помощью регулярного выражения:
use Illuminate\Support\Str;
$segments = Str::of('one, two, three')->split('/[\s,]+/');
// collect(["one", "two", "three"])
squish
Метод squish удаляет все лишние пробелы из строки, включая лишние пробелы между словами:
use Illuminate\Support\Str;
$string = Str::of(' laravel framework ')->squish();
// laravel framework
start
Метод start добавляет один экземпляр указанного значения в переданную строку, если она еще не начинается этим значением:
use Illuminate\Support\Str;
$adjusted = Str::of('this/string')->start('/');
// /this/string
$adjusted = Str::of('/this/string')->start('/');
// /this/string
startsWith
Метод startsWith определяет, начинается ли переданная строка с указанного значения:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->startsWith('This');
// true
stripTags
Метод stripTags удаляет все HTML- и PHP-теги из строки:
use Illuminate\Support\Str;
$result = Str::of('<a href="https://laravel.com">Taylor <b>Otwell</b></a>')->stripTags();
// Taylor Otwell
$result = Str::of('<a href="https://laravel.com">Taylor <b>Otwell</b></a>')->stripTags('<b>');
// Taylor <b>Otwell</b>
studly
Метод studly преобразует переданную строку в StudlyCase:
use Illuminate\Support\Str;
$converted = Str::of('foo_bar')->studly();
// FooBar
substr
Метод substr возвращает часть строки, заданную параметрами «начало» и «длина»:
use Illuminate\Support\Str;
$string = Str::of('Laravel Framework')->substr(8);
// Framework
$string = Str::of('Laravel Framework')->substr(8, 5);
// Frame
substrReplace
Метод substrReplace заменяет текст в части строки, начиная с позиции, указанной третьим аргументом, и заменяет число символов, указанное четвертым аргументом. Передав 0 четвертым аргументом в метод, строка будет вставлена в указанную позицию без замены каких-либо существующих символов в строке:
use Illuminate\Support\Str;
$string = Str::of('1300')->substrReplace(':', 2);
// 13:
$string = Str::of('The Framework')->substrReplace(' Laravel', 3, 0);
// The Laravel Framework
swap
Метод swap заменяет несколько значений в строке с использованием функции strtr PHP:
use Illuminate\Support\Str;
$string = Str::of('Tacos are great!')
->swap([
'Tacos' => 'Burritos',
'great' => 'fantastic',
]);
// Burritos are fantastic!
take
Метод take возвращает указанное количество символов из начала строки:
use Illuminate\Support\Str;
$taken = Str::of('Build something amazing!')->take(5);
// Build
tap
Метод tap передает строку заданному замыканию, позволяя вам взаимодействовать с ней, не затрагивая при этом саму строку. Исходная строка возвращается методом tap независимо от того, что возвращает замыкание:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('Laravel')
->append(' Framework')
->tap(function (Stringable $string) {
dump('String after append: '.$string);
})
->upper();
// LARAVEL FRAMEWORK
test
Метод test определяет, соответствует ли строка переданному шаблону регулярного выражения:
use Illuminate\Support\Str;
$result = Str::of('Laravel Framework')->test('/Laravel/');
// true
title
Метод title преобразует переданную строку в Title Case:
use Illuminate\Support\Str;
$converted = Str::of('a nice title uses the correct case')->title();
// A Nice Title Uses The Correct Case
toBase64
Метод toBase64 преобразует переданную строку в Base64:
use Illuminate\Support\Str;
$base64 = Str::of('Laravel')->toBase64();
// TGFyYXZlbA==
toHtmlString
Метод toHtmlString преобразует заданную строку в экземпляр Illuminate\Support\HtmlString, который не будет экранирован при визуализации в шаблонах Blade:
use Illuminate\Support\Str;
$htmlString = Str::of('Nuno Maduro')->toHtmlString();
toUri
Метод toUri преобразует заданную строку в экземпляр Illuminate\Support\Uri:
use Illuminate\Support\Str;
$uri = Str::of('https://example.com')->toUri();
transliterate
Метод transliterate попытается преобразовать данную строку в ее ближайшее представление ASCII:
use Illuminate\Support\Str;
$email = Str::of('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ')->transliterate()
// 'test@laravel.com'
trim
Метод trim обрезает переданную строку. В отличие от встроенной функции PHP trim, метод trim в Laravel также удаляет пробельные символы Юникода:
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->trim();
// 'Laravel'
$string = Str::of('/Laravel/')->trim('/');
// 'Laravel'
ltrim
Метод ltrim обрезает левую часть строки. В отличие от встроенной функции PHP ltrim, метод ltrim в Laravel также удаляет пробельные символы Юникода:
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->ltrim();
// 'Laravel '
$string = Str::of('/Laravel/')->ltrim('/');
// 'Laravel/'
rtrim {.collection-method}
Метод rtrim обрезает правую часть заданной строки. В отличие от встроенной функции PHP rtrim, метод Laravel rtrim также удаляет пробельные символы Юникода:
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->rtrim();
// ' Laravel'
$string = Str::of('/Laravel/')->rtrim('/');
// '/Laravel'
ucfirst
Метод ucfirst возвращает переданную строку с первой заглавной буквой:
use Illuminate\Support\Str;
$string = Str::of('foo bar')->ucfirst();
// Foo bar
ucsplit
Метод upper преобразует переданную строку в верхний регистр:
use Illuminate\Support\Str;
$string = Str::of('Foo Bar')->ucsplit();
// collect(['Foo', 'Bar'])
unwrap
Метод unwrap удаляет указанные строки из начала и конца заданной строки:
use Illuminate\Support\Str;
Str::of('-Laravel-')->unwrap('-');
// Laravel
Str::of('{framework: "Laravel"}')->unwrap('{', '}');
// framework: "Laravel"
upper
Метод upper преобразует заданную строку в верхний регистр:
use Illuminate\Support\Str;
$adjusted = Str::of('laravel')->upper();
// LARAVEL
when
Метод when вызывает указанное замыкание, если переданное условие истинно. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('Taylor')
->when(true, function (Stringable $string) {
return $string->append(' Otwell');
});
// 'Taylor Otwell'
При необходимости вы можете передать другое замыкание в качестве третьего параметра методу when. Это замыкание будет выполнено, если параметр условия оценивается как false.
whenContains
Метод whenContains вызывает данное замыкание, если строка содержит заданное значение. Замыкание получит экземпляр класса Stringable в качестве аргумента:
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
Метод whenContainsAll вызывает данное замыкание, если строка содержит все заданные подстроки. Замыкание получит экземпляр класса Stringable в качестве аргумента:
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
Метод whenDoesntEndWith вызывает заданное замыкание, если строка не заканчивается заданной подстрокой. Замыкание получит экземпляр текущей строки:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('disney world')->whenDoesntEndWith('land', function (Stringable $string) {
return $string->title();
});
// 'Disney World'
whenDoesntStartWith
Метод whenDoesntStartWith вызывает заданное замыкание, если строка не начинается с заданной подстроки. Замыкание получит экземпляр текущей строки:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('disney world')->whenDoesntStartWith('sea', function (Stringable $string) {
return $string->title();
});
// 'Disney World'
whenEmpty
Метод whenEmpty вызывает переданное замыкание, если строка пуста. Если замыкание возвращает значение, то это значение будет возвращено методом whenEmpty. Если замыкание не возвращает значение, будет возвращен экземпляр Fluent:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of(' ')->trim()->whenEmpty(function (Stringable $string) {
return $string->prepend('Laravel');
});
// 'Laravel'
whenNotEmpty
Метод whenNotEmpty вызывает данное замыкание, если строка не пуста. Если замыкание возвращает значение, это значение также будет возвращено методом whenNotEmpty. Если замыкание не возвращает значение, будет возвращен экземпляр класса Stringable:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('Framework')->whenNotEmpty(function (Stringable $string) {
return $string->prepend('Laravel ');
});
// 'Laravel Framework'
whenStartsWith
Метод whenStartsWith вызывает данное замыкание, если строка начинается с данной подстроки. Замыкание получит свободный экземпляр класса Stringable в качестве аргумента:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('disney world')->whenStartsWith('disney', function (Stringable $string) {
return $string->title();
});
// 'Disney World'
whenEndsWith
Метод whenEndsWith вызывает данное замыкание, если строка заканчивается заданной подстрокой. Замыкание получит свободный экземпляр строки:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('disney world')->whenEndsWith('world', function (Stringable $string) {
return $string->title();
});
// 'Disney World'
whenExactly
Метод whenExactly вызывает данное замыкание, если строка точно соответствует заданной строке. Закрытие получит свободный экземпляр строки:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('laravel')->whenExactly('laravel', function (Stringable $string) {
return $string->title();
});
// 'Laravel'
whenNotExactly
Метод whenExactly вызывает данное замыкание, если строка не соответствует заданной строке. Закрытие получит свободный экземпляр строки:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('framework')->whenNotExactly('laravel', function (Stringable $string) {
return $string->title();
});
// 'Framework'
whenIs
Метод whenIs вызывает данное замыкание, если строка соответствует заданному шаблону. Звездочки могут использоваться в качестве подстановочных знаков. Замыкание получит экземпляр класса Stringable в качестве аргумента:
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
Метод whenIsAscii вызывает данное замыкание, если строка представляет собой 7-битный ASCII. Замыкание получит экземпляр класса Stringable в качестве аргумента:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('laravel')->whenIsAscii(function (Stringable $string) {
return $string->title();
});
// 'Laravel'
whenIsUlid
Метод whenIsUlid вызывает заданное замыкание, если строка является допустимым ULID. Замыкание получит экземпляр класса Stringable в качестве аргумента:
use Illuminate\Support\Str;
$string = Str::of('01gd6r360bp37zj17nxb55yv40')->whenIsUlid(function (Stringable $string) {
return $string->substr(0, 8);
});
// '01gd6r36'
whenIsUuid
Метод whenIsUuid вызывает данное замыкание, если строка является допустимым UUID. Замыкание получит экземпляр класса Stringable в качестве аргумента:
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 вызывает данное замыкание, если строка соответствует заданному регулярному выражению. Замыкание получит экземпляр класса Stringable в качестве аргумента:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('laravel framework')->whenTest('/laravel/', function (Stringable $string) {
return $string->title();
});
// 'Laravel Framework'
wordCount
Метод wordCount возвращает число слов в строке:
use Illuminate\Support\Str;
Str::of('Hello, world!')->wordCount(); // 2
words
Метод words ограничивает количество слов в строке. Дополнительная строка может быть передана этому методу, чтобы указать, какая строка должна быть добавлена в конец усеченной строки:
use Illuminate\Support\Str;
$string = Str::of('Perfectly balanced, as all things should be.')->words(3, ' >>>');
// Perfectly balanced, as >>>
wrap
Метод wrap оборачивает данную строку дополнительной строкой или парой строк:
use Illuminate\Support\Str;
Str::of('Laravel')->wrap('"');
// "Laravel"
Str::is('is')->wrap(before: 'This ', after: ' Laravel!');
// This is Laravel!