Рядки (Strings)

Вступ

Laravel включає різноманітні функції для маніпулювання рядковими значеннями. Багато з цих функцій використовуються самим фреймворком; однак, ви можете вільно використовувати їх у своїх власних застосунках, якщо вважаєте їх зручними.

Доступні методи

Рядки

Рядки Fluent

Рядки

__()

Функція __ перекладає заданий рядок перекладу або ключ перекладу, використовуючи ваші файли локалізації:

echo __('Ласкаво просимо до нашого застосунку');
 
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 = 'Подія відбудеться між :start та :end';
 
$replaced = preg_replace_array('/:[a-z_]+/', ['8:30', '9:00'], $string);
 
// Подія відбудеться між 8:30 та 9:00

Str::after()

Метод Str::after повертає все після заданого значення в рядку. Весь рядок буде повернуто, якщо значення не існує в рядку:

use Illuminate\Support\Str;
 
$slice = Str::after('This is my name', 'This is');
 
// ' my name'

Str::afterLast()

Метод Str::afterLast повертає все, що знаходиться після останнього входження заданого значення в рядку. Весь рядок буде повернуто, якщо значення не існує в рядку:

use Illuminate\Support\Str;
 
$slice = Str::afterLast('App\Http\Controllers\Controller', '\\');
 
// 'Controller'

Str::apa()

Метод Str::apa перетворює заданий рядок у заголовний регістр відповідно до вказівок APA:

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', ['This', '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

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 перетворює Markdown у стилі GitHub у 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

За замовчуванням, 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 обгортає функцію 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

Str::pluralStudly()

Метод Str::pluralStudly перетворює рядок з одниною, відформатований у стилі studly caps, у його множинну форму. Ця функція підтримує будь-яку з мов, підтримуваних засобом множини Laravel:

use Illuminate\Support\Str;
 
$plural = Str::pluralStudly('VerifiedHuman');
 
// VerifiedHumans
 
$plural = Str::pluralStudly('UserFeedback');
 
// UserFeedback

Ви можете надати ціле число як другий аргумент до функції, щоб отримати однину або множину рядка:

use Illuminate\Support\Str;
 
$plural = Str::pluralStudly('VerifiedHuman', 2);
 
// VerifiedHumans
 
$singular = Str::pluralStudly('VerifiedHuman', 1);
 
// VerifiedHuman

Str::position()

Метод Str::position повертає позицію першого входження підрядка в рядок. Якщо підрядок не існує в заданому рядку, повертається false:

use Illuminate\Support\Str;
 
$position = Str::position('Hello, World!', 'Hello');
 
// 0
 
$position = Str::position('Hello, World!', 'W');
 
// 7

Str::random()

Метод Str::random генерує випадковий рядок заданої довжини. Ця функція використовує PHP-функцію random_bytes:

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

Під час тестування може бути корисно "підробити" значення, яке повертається методом Str::random. Для цього ви можете використовувати метод createRandomStringsUsing:

Str::createRandomStringsUsing(function () {
    return 'fake-random-string';
});

Щоб вказати методу random повернутися до нормального генерування випадкових рядків, ви можете викликати метод createRandomStringsNormally:

Str::createRandomStringsNormally();

Str::remove()

Метод Str::remove видаляє задане значення або масив значень зі строки:

use Illuminate\Support\Str;
 
$string = 'Peter Piper picked a peck of pickled peppers.';
 
$removed = Str::remove('e', $string);
 
// Ptr Pipr pickd a pck of pickld ppprs.

Ви також можете передати false як третій аргумент до методу remove, щоб ігнорувати регістр при видаленні рядків.

Str::repeat()

Метод Str::repeat повторює заданий рядок:

use Illuminate\Support\Str;
 
$string = 'a';
 
$repeat = Str::repeat($string, 5);
 
// aaaaa

Str::replace()

Метод Str::replace замінює заданий рядок у рядку:

use Illuminate\Support\Str;
 
$string = 'Laravel 11.x';
 
$replaced = Str::replace('11.x', '12.x', $string);
 
// Laravel 12.x

Метод replace також приймає аргумент caseSensitive. За замовчуванням метод replace є чутливим до регістру:

$replaced = Str::replace(
    'php',
    'Laravel',
    'PHP Framework for Web Artisans',
    caseSensitive: false
);
 
// Laravel Framework for Web Artisans

Str::replaceArray()

Метод Str::replaceArray послідовно замінює задане значення в рядку, використовуючи масив:

use Illuminate\Support\Str;
 
$string = 'The event will take place between ? and ?';
 
$replaced = Str::replaceArray('?', ['8:30', '9:00'], $string);
 
// The event will take place between 8:30 and 9:00

Str::replaceFirst()

Метод Str::replaceFirst замінює перше входження заданого значення в рядку:

use Illuminate\Support\Str;
 
$replaced = Str::replaceFirst('the', 'a', 'the quick brown fox jumps over the lazy dog');
 
// a quick brown fox jumps over the lazy dog

Str::replaceLast()

Метод Str::replaceLast замінює останнє входження заданого значення в рядку:

use Illuminate\Support\Str;
 
$replaced = Str::replaceLast('the', 'a', 'the quick brown fox jumps over the lazy dog');
 
// the quick brown fox jumps over a lazy dog

Str::replaceMatches()

Метод Str::replaceMatches замінює всі частини рядка, що відповідають шаблону, на заданий рядок заміни:

use Illuminate\Support\Str;
 
$replaced = Str::replaceMatches(
    pattern: '/[^A-Za-z0-9]++/',
    replace: '',
    subject: '(+1) 501-555-1000'
)
 
// '15015551000'

Метод replaceMatches також приймає замикання, яке буде викликано з кожною частиною рядка, що відповідає заданому шаблону, дозволяючи виконати логіку заміни всередині замикання та повернути замінене значення:

use Illuminate\Support\Str;
 
$replaced = Str::replaceMatches('/\d/', function (array $matches) {
    return '['.$matches[0].']';
}, '123');
 
// '[1][2][3]'

Str::replaceStart()

Метод Str::replaceStart замінює перше входження заданого значення лише якщо значення з'являється на початку рядка:

use Illuminate\Support\Str;
 
$replaced = Str::replaceStart('Hello', 'Laravel', 'Hello World');
 
// Laravel World
 
$replaced = Str::replaceStart('World', 'Laravel', 'Hello World');
 
// Hello World

Str::replaceEnd()

Метод Str::replaceEnd замінює останнє входження заданого значення лише якщо значення з'являється в кінці рядка:

use Illuminate\Support\Str;
 
$replaced = Str::replaceEnd('World', 'Laravel', 'Hello World');
 
// Hello Laravel
 
$replaced = Str::replaceEnd('Hello', 'Laravel', 'Hello World');
 
// Hello World

Str::reverse()

Метод Str::reverse перевертає заданий рядок:

use Illuminate\Support\Str;
 
$reversed = Str::reverse('Hello World');
 
// dlroW olleH

Str::singular()

Метод Str::singular перетворює рядок у його однину. Ця функція підтримує будь-яку з мов, які підтримує засіб множини Laravel:

use Illuminate\Support\Str;
 
$singular = Str::singular('cars');
 
// car
 
$singular = Str::singular('children');
 
// child

Str::slug()

Метод Str::slug генерує зручний для URL "слаг" з наданого рядка:

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 повертає частину рядка, визначену параметрами start і length:

use Illuminate\Support\Str;
 
$converted = Str::substr('The Laravel Framework', 4, 7);
 
// Laravel

Str::substrCount()

Метод Str::substrCount повертає кількість входжень заданого значення у вказаному рядку:

use Illuminate\Support\Str;
 
$count = Str::substrCount('If you like ice cream, you will like snow cones.', 'like');
 
// 2

Str::substrReplace()

Метод Str::substrReplace замінює текст у частині рядка, починаючи з позиції, вказаної третім аргументом, і замінює кількість символів, вказану четвертим аргументом. Передача 0 як четвертого аргументу методу вставить рядок у вказану позицію без заміни будь-яких існуючих символів у рядку:

use Illuminate\Support\Str;
 
$result = Str::substrReplace('1300', ':', 2);
// 13:
 
$result = Str::substrReplace('1300', ':', 2, 0);
// 13:00

Str::swap()

Метод Str::swap замінює декілька значень у заданому рядку, використовуючи функцію PHP strtr:

use Illuminate\Support\Str;
 
$string = Str::swap([
    'Tacos' => 'Burritos',
    'great' => 'fantastic',
], 'Tacos are great!');
 
// Burritos are fantastic!

Str::take()

Метод Str::take повертає вказану кількість символів з початку рядка:

use Illuminate\Support\Str;
 
$taken = Str::take('Build something amazing!', 5);
 
// Build

Str::title()

Метод Str::title перетворює заданий рядок у Title Case:

use Illuminate\Support\Str;
 
$converted = Str::title('a nice title uses the correct case');
 
// A Nice Title Uses The Correct Case

Str::toBase64()

Метод Str::toBase64 перетворює заданий рядок у Base64:

use Illuminate\Support\Str;
 
$base64 = Str::toBase64('Laravel');
 
// TGFyYXZlbA==

Str::transliterate()

Метод Str::transliterate спробує перетворити заданий рядок у його найближче ASCII-представлення:

use Illuminate\Support\Str;
 
$email = Str::transliterate('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ');
 
// 'example@example.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 також видаляє символи пробілів унікоду:

use Illuminate\Support\Str;
 
$string = Str::ltrim('  foo bar  ');
 
// 'foo bar  '

Str::rtrim()

Метод 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 рядки надають більш плавний, об'єктно-орієнтований інтерфейс для роботи зі строковими значеннями, дозволяючи об'єднувати декілька операцій з рядками разом, використовуючи більш читабельний синтаксис у порівнянні з традиційними операціями з рядками.

after

Метод after повертає все після заданого значення в рядку. Весь рядок буде повернуто, якщо значення не існує в рядку:

use Illuminate\Support\Str;
 
$slice = Str::of('This is my name')->after('This is');
 
// ' my name'

afterLast

Метод afterLast повертає все, що знаходиться після останнього входження заданого значення в рядку. Весь рядок буде повернуто, якщо значення не існує в рядку:

use Illuminate\Support\Str;
 
$slice = Str::of('App\Http\Controllers\Controller')->afterLast('\\');
 
// 'Controller'

apa

Метод apa перетворює заданий рядок у заголовний регістр відповідно до вказівок APA:

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(['This', '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

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 обгортає функцію PHP str_pad, доповнюючи обидві сторони рядка іншим рядком, поки кінцевий рядок не досягне бажаної довжини:

use Illuminate\Support\Str;
 
$padded = Str::of('James')->padBoth(10, '_');
 
// '__James___'
 
$padded = Str::of('James')->padBoth(10);
 
// '  James   '

padLeft

Метод padLeft обгортає функцію PHP str_pad, додаючи рядок з лівого боку іншого рядка, поки кінцевий рядок не досягне бажаної довжини:

use Illuminate\Support\Str;
 
$padded = Str::of('James')->padLeft(10, '-=');
 
// '-=-=-James'
 
$padded = Str::of('James')->padLeft(10);
 
// '     James'

padRight

Метод padRight обгортає функцію PHP str_pad, доповнюючи праву сторону рядка іншим рядком, поки кінцевий рядок не досягне бажаної довжини:

use Illuminate\Support\Str;
 
$padded = Str::of('James')->padRight(10, '-');
 
// 'James-----'
 
$padded = Str::of('James')->padRight(10);
 
// 'James     '

pipe

Метод pipe дозволяє трансформувати рядок, передаючи його поточне значення в заданий callable:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
 
$hash = Str::of('Laravel')->pipe('md5')->prepend('Checksum: ');
 
// 'Checksum: a5c95b86291ea299fcbe64458ed12702'
 
$closure = Str::of('foo')->pipe(function (Stringable $str) {
    return 'bar';
});
 
// 'bar'

plural

Метод plural перетворює рядок з однини на множину. Ця функція підтримує будь-яку з мов, які підтримує множник Laravel:

use Illuminate\Support\Str;
 
$plural = Str::of('car')->plural();
 
// cars
 
$plural = Str::of('child')->plural();
 
// children

Ви можете надати ціле число як другий аргумент до функції, щоб отримати однину або множину рядка:

use Illuminate\Support\Str;
 
$plural = Str::of('child')->plural(2);
 
// children
 
$plural = Str::of('child')->plural(1);
 
// child

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 аналізує вхідні дані з рядка в колекцію відповідно до формату, підтримуваного функцією PHP sscanf:

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

singular

Метод singular перетворює рядок у його однину. Ця функція підтримує будь-яку з мов, які підтримуються засобом множини Laravel:

use Illuminate\Support\Str;
 
$singular = Str::of('cars')->singular();
 
// car
 
$singular = Str::of('children')->singular();
 
// child

slug

Метод 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 замінює декілька значень у рядку, використовуючи функцію PHP strtr:

use Illuminate\Support\Str;
 
$string = Str::of('Tacos are great!')
    ->swap([
        'Tacos' => 'Burritos',
        'great' => 'fantastic',
    ]);
 
// Burritos are fantastic!

take

Метод take повертає вказану кількість символів з початку рядка:

use Illuminate\Support\Str;
 
$taken = Str::of('Build something amazing!')->take(5);
 
// Build

tap

Метод tap передає рядок у вказане замикання, дозволяючи вам досліджувати та взаємодіяти з рядком, не впливаючи на сам рядок. Оригінальний рядок повертається методом tap незалежно від того, що повертає замикання:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
 
$string = Str::of('Laravel')
    ->append(' Framework')
    ->tap(function (Stringable $string) {
        dump('String after append: '.$string);
    })
    ->upper();
 
// LARAVEL FRAMEWORK

test

Метод test визначає, чи відповідає рядок заданому шаблону регулярного виразу:

use Illuminate\Support\Str;
 
$result = Str::of('Laravel Framework')->test('/Laravel/');
 
// true

title

Метод title перетворює даний рядок у Title Case:

use Illuminate\Support\Str;
 
$converted = Str::of('a nice title uses the correct case')->title();
 
// A Nice Title Uses The Correct Case

toBase64

Метод toBase64 перетворює заданий рядок у Base64:

use Illuminate\Support\Str;
 
$base64 = Str::of('Laravel')->toBase64();
 
// TGFyYXZlbA==

toHtmlString

Метод toHtmlString перетворює даний рядок на екземпляр Illuminate\Support\HtmlString, який не буде екрановано при відображенні в шаблонах Blade:

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

toUri

Метод toUri перетворює даний рядок на екземпляр Illuminate\Support\Uri:

use Illuminate\Support\Str;
 
$uri = Str::of('https://example.com')->toUri();

transliterate

Метод transliterate спробує перетворити заданий рядок у його найближче ASCII-представлення:

use Illuminate\Support\Str;
 
$email = Str::of('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ')->transliterate()
 
// 'example@example.com'

trim

Метод trim обрізає заданий рядок. На відміну від нативної PHP функції trim, метод Laravel trim також видаляє символи пробілів Unicode:

use Illuminate\Support\Str;
 
$string = Str::of('  Laravel  ')->trim();
 
// 'Laravel'
 
$string = Str::of('/Laravel/')->trim('/');
 
// 'Laravel'

ltrim

Метод ltrim обрізає ліву сторону рядка. На відміну від нативної функції PHP ltrim, метод Laravel ltrim також видаляє символи пробілу в юнікоді:

use Illuminate\Support\Str;
 
$string = Str::of('  Laravel  ')->ltrim();
 
// 'Laravel  '
 
$string = Str::of('/Laravel/')->ltrim('/');
 
// 'Laravel/'

rtrim

Метод rtrim обрізає праву сторону заданого рядка. На відміну від нативної функції PHP rtrim, метод rtrim у Laravel також видаляє символи пробілів унікод:

use Illuminate\Support\Str;
 
$string = Str::of('  Laravel  ')->rtrim();
 
// '  Laravel'
 
$string = Str::of('/Laravel/')->rtrim('/');
 
// '/Laravel'

ucfirst

Метод ucfirst повертає заданий рядок з першою літерою, перетвореною на велику:

use Illuminate\Support\Str;
 
$string = Str::of('foo bar')->ucfirst();
 
// Foo bar

ucsplit

Метод ucsplit розділяє заданий рядок на колекцію за великими літерами:

use Illuminate\Support\Str;
 
$string = Str::of('Foo Bar')->ucsplit();
 
// collect(['Foo', 'Bar'])

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 викликає надане замикання, якщо задана умова є true. Замикання отримає екземпляр 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 викликає передану замикання, якщо рядок містить задане значення. Замикання отримає екземпляр fluent рядка:

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 викликає передану замикання, якщо рядок містить усі задані підрядки. Замикання отримає екземпляр fluent рядка:

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 викликає передану замикання, якщо рядок не закінчується на вказаний підрядок. Замикання отримає екземпляр об'єкта fluent string:

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 викликає передану замикання, якщо рядок не починається з вказаного підрядка. Замикання отримає екземпляр fluent string:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
 
$string = Str::of('disney world')->whenDoesntStartWith('sea', function (Stringable $string) {
    return $string->title();
});
 
// 'Disney World'

whenEmpty

Метод whenEmpty викликає передану замикання, якщо рядок порожній. Якщо замикання повертає значення, це значення також буде повернено методом whenEmpty. Якщо замикання не повертає значення, буде повернено екземпляр рядка з ланцюжком методів:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
 
$string = Str::of('  ')->trim()->whenEmpty(function (Stringable $string) {
    return $string->prepend('Laravel');
});
 
// 'Laravel'

whenNotEmpty

Метод whenNotEmpty викликає передану замикання, якщо рядок не є порожнім. Якщо замикання повертає значення, це значення також буде повернено методом whenNotEmpty. Якщо замикання не повертає значення, буде повернено екземпляр рядка з ланцюжком методів:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
 
$string = Str::of('Framework')->whenNotEmpty(function (Stringable $string) {
    return $string->prepend('Laravel ');
});
 
// 'Laravel Framework'

whenStartsWith

Метод whenStartsWith викликає передану замикання, якщо рядок починається з вказаного підрядка. Замикання отримає екземпляр fluent string:

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 викликає передану замикання, якщо рядок закінчується на заданий підрядок. Замикання отримає екземпляр об'єкта fluent string:

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 викликає передану замикання, якщо рядок точно відповідає заданому рядку. Замикання отримає екземпляр fluent string:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
 
$string = Str::of('laravel')->whenExactly('laravel', function (Stringable $string) {
    return $string->title();
});
 
// 'Laravel'

whenNotExactly

Метод whenNotExactly викликає передану замикання, якщо рядок не точно відповідає заданому рядку. Замикання отримає екземпляр fluent string:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
 
$string = Str::of('framework')->whenNotExactly('laravel', function (Stringable $string) {
    return $string->title();
});
 
// 'Framework'

whenIs

Метод whenIs викликає передану замикання, якщо рядок відповідає заданому шаблону. Зірочки можуть використовуватися як символи підстановки. Замикання отримає екземпляр рядка fluent:

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. Замикання отримає екземпляр рядка fluent:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
 
$string = Str::of('laravel')->whenIsAscii(function (Stringable $string) {
    return $string->title();
});
 
// 'Laravel'

whenIsUlid

Метод whenIsUlid викликає передану замикання, якщо рядок є дійсним ULID. Замикання отримає екземпляр fluent рядка:

use Illuminate\Support\Str;
 
$string = Str::of('01gd6r360bp37zj17nxb55yv40')->whenIsUlid(function (Stringable $string) {
    return $string->substr(0, 8);
});
 
// '01gd6r36'

whenIsUuid

Метод whenIsUuid викликає передану замикання, якщо рядок є дійсним UUID. Замикання отримає екземпляр fluent string:

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 викликає передану замикання, якщо рядок відповідає заданому регулярному виразу. Замикання отримає екземпляр fluent string:

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!