Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти
Інше
Події Про нас

Рядки

Вступ

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

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

Рядки

Плавні рядки

Рядки

__()

Функція __ перекладає заданий рядок або ключ перекладу за допомогою ваших мовних файлів:

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>');

// &lt;html&gt;foo&lt;/html&gt;

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 перетворює заданий рядок на заголовний регістр за настановами 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', 'framework']);

// 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::initials()

Метод Str::initials повертає ініціали заданого рядка, за бажанням переводячи їх у верхній регістр:

use Illuminate\Support\Str;

$initials = Str::initials('taylor otwell');

// to

$initials = Str::initials('taylor otwell', capitalize: true);

// TO

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(&quot;Hello XSS!&quot;);

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 специфікації певної версії (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 перетворює 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(&quot;Hello XSS!&quot;);</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::isMatch()

Метод Str::isMatch повертає true, якщо рядок відповідає заданому регулярному виразу:

use Illuminate\Support\Str;

$result = Str::isMatch('/foo (.*)/', 'foo bar');

// true

$result = Str::isMatch('/foo (.*)/', 'laravel');

// false

Str::orderedUuid()

Метод Str::orderedUuid генерує UUID, у якому першою йде часова позначка, - такий 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::counted()

Метод Str::counted перетворює слово в однині на однину чи множину залежно від заданої кількості й додає перед результатом відформатовану кількість:

use Illuminate\Support\Str;

$label = Str::counted('order', 1);

// 1 order

$label = Str::counted('order', 1000);

// 1,000 orders

Str::plural()

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

use Illuminate\Support\Str;

$plural = Str::plural('car');

// cars

$plural = Str::plural('child');

// children

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

use Illuminate\Support\Str;

$plural = Str::plural('child', 2);

// children

$singular = Str::plural('child', 1);

// child

Аргументом prependCount можна додати перед формою множини відформатоване значення $count:

use Illuminate\Support\Str;

$label = Str::plural('car', 1000, prependCount: true);

// 1,000 cars

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 «slug»:

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 замінює в заданому рядку кілька значень за допомогою 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('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ');

// 'test@laravel.com'

Str::trim()

Метод Str::trim прибирає пробіли (чи інші символи) з початку та кінця заданого рядка. На відміну від нативної PHP-функції trim, метод Str::trim прибирає ще й пробільні символи Unicode:

use Illuminate\Support\Str;

$string = Str::trim(' foo bar ');

// 'foo bar'

Str::ltrim()

Метод Str::ltrim прибирає пробіли (чи інші символи) з початку заданого рядка. На відміну від нативної PHP-функції ltrim, метод Str::ltrim прибирає ще й пробільні символи Unicode:

use Illuminate\Support\Str;

$string = Str::ltrim('  foo bar  ');

// 'foo bar  '

Str::rtrim()

Метод Str::rtrim прибирає пробіли (чи інші символи) з кінця заданого рядка. На відміну від нативної PHP-функції rtrim, метод Str::rtrim прибирає ще й пробільні символи Unicode:

use Illuminate\Support\Str;

$string = Str::rtrim('  foo bar  ');

// '  foo bar'

Str::ucfirst()

Метод Str::ucfirst повертає заданий рядок, у якому перший символ переведено у верхній регістр:

use Illuminate\Support\Str;

$string = Str::ucfirst('foo bar');

// Foo bar

Str::ucsplit()

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

use Illuminate\Support\Str;

$segments = Str::ucsplit('FooBar');

// [0 => 'Foo', 1 => 'Bar']

Str::ucwords()

Метод Str::ucwords переводить перший символ кожного слова в заданому рядку у верхній регістр:

use Illuminate\Support\Str;

$string = Str::ucwords('laravel framework');

// Laravel Framework

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, якби такого ключа перекладу не було.

Плавні рядки

Плавні рядки дають плавніший, об'єктно-орієнтований інтерфейс для роботи з рядковими значеннями: ви можете зчіплювати кілька операцій над рядком ланцюжком, і синтаксис читається краще, ніж у традиційних операціях із рядками.

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'

doesntContain()

Метод doesntContain визначає, чи не містить заданий рядок задане значення. Цей метод обернений до contains. За замовчуванням він чутливий до регістру:

use Illuminate\Support\Str;

$doesntContain = Str::of('This is name')->doesntContain('my');

// true

Ви можете також передати масив значень, щоб перевірити, чи не містить рядок жодного зі значень масиву:

use Illuminate\Support\Str;

$doesntContain = Str::of('This is name')->doesntContain(['my', 'framework']);

// true

Вимкнути чутливість до регістру можна, задавши аргументу ignoreCase значення true:

use Illuminate\Support\Str;

$doesntContain = Str::of('This is my name')->doesntContain('MY', ignoreCase: true);

// false

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

initials

Метод initials перетворює рядок на його ініціали:

use Illuminate\Support\Str;

$initials = Str::of('Taylor Otwell')->initials()->upper();

// TO

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(&quot;Hello XSS!&quot;);

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 специфікації певної версії (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(&quot;Hello XSS!&quot;);</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 дозволяє перетворити рядок, передавши його поточне значення заданому виклику:

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'

counted

Метод counted перетворює слово в однині на однину чи множину залежно від заданої кількості й додає перед результатом відформатовану кількість:

use Illuminate\Support\Str;

$label = Str::of('order')->counted(1);

// 1 order

$label = Str::of('order')->counted(1000);

// 1,000 orders

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

Аргументом prependCount можна додати перед формою множини відформатоване значення $count:

use Illuminate\Support\Str;

$label = Str::of('car')->plural(1000, prependCount: true);

// 1,000 cars

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 «slug»:

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

Ви можете також передати масив значень, щоб перевірити, чи починається рядок будь-яким зі значень масиву:

use Illuminate\Support\Str;

$result = Str::of('This is my name')->startsWith(['This', 'That']);

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

// 'test@laravel.com'

trim

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

use Illuminate\Support\Str;

$string = Str::of('  Laravel  ')->trim();

// 'Laravel'

$string = Str::of('/Laravel/')->trim('/');

// 'Laravel'

ltrim

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

use Illuminate\Support\Str;

$string = Str::of('  Laravel  ')->ltrim();

// 'Laravel  '

$string = Str::of('/Laravel/')->ltrim('/');

// 'Laravel/'

rtrim

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

use Illuminate\Support\Str;

$string = Str::of('  Laravel  ')->rtrim();

// '  Laravel'

$string = Str::of('/Laravel/')->rtrim('/');

// '/Laravel'

ucfirst

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

use Illuminate\Support\Str;

$string = Str::of('foo bar')->ucfirst();

// Foo bar

ucsplit

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

use Illuminate\Support\Str;

$string = Str::of('Foo Bar')->ucsplit();

// collect(['Foo ', 'Bar'])

ucwords

Метод ucwords переводить перший символ кожного слова в заданому рядку у верхній регістр:

use Illuminate\Support\Str;

$string = Str::of('laravel framework')->ucwords();

// Laravel Framework

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

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

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;

$string = Str::of('tony stark')
    ->whenContains('tony', function (Stringable $string) {
        return $string->title();
    });

// 'Tony Stark'

За потреби третім параметром можна передати ще одне замикання. Воно буде викликане, якщо рядок не містить заданого значення.

Ви можете також передати масив значень, щоб перевірити, чи містить рядок будь-яке зі значень масиву:

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

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;

$string = Str::of('tony stark')
    ->whenContainsAll(['tony', 'stark'], function (Stringable $string) {
        return $string->title();
    });

// 'Tony Stark'

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

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

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

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

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;

$string = Str::of('framework')->whenNotExactly('laravel', function (Stringable $string) {
    return $string->title();
});

// 'Framework'

whenIs

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

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;

$string = Str::of('foo/bar')->whenIs('foo/*', function (Stringable $string) {
    return $string->append('/baz');
});

// 'foo/bar/baz'

whenIsAscii

Метод whenIsAscii викликає задане замикання, якщо рядок є 7-бітним ASCII. Замикання отримає екземпляр плавного рядка:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;

$string = Str::of('laravel')->whenIsAscii(function (Stringable $string) {
    return $string->title();
});

// 'Laravel'

whenIsUlid

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

use Illuminate\Support\Str;

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

// '01gd6r36'

whenIsUuid

Метод whenIsUuid викликає задане замикання, якщо рядок є коректним UUID. Замикання отримає екземпляр плавного рядка:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;

$string = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->whenIsUuid(function (Stringable $string) {
    return $string->substr(0, 8);
});

// 'a0a2a2d2'

whenTest

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

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;

$string = Str::of('laravel framework')->whenTest('/laravel/', function (Stringable $string) {
    return $string->title();
});

// 'Laravel Framework'

wordCount

Метод wordCount повертає кількість слів у рядку:

use Illuminate\Support\Str;

Str::of('Hello, world!')->wordCount(); // 2

words

Метод 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!