Рядки
Вступ
Laravel має цілу низку функцій для роботи з рядковими значеннями. Багато з них використовує сам фреймворк, але ви вільні застосовувати їх і у власних застосунках, якщо вважаєте зручними.
Доступні методи
Рядки
__ class_basename e preg_replace_array Str::after Str::afterLast Str::apa Str::ascii Str::before Str::beforeLast Str::between Str::betweenFirst Str::camel Str::charAt Str::chopStart Str::chopEnd Str::contains Str::containsAll Str::counted Str::doesntContain Str::doesntEndWith Str::doesntStartWith Str::deduplicate Str::endsWith Str::excerpt Str::finish Str::fromBase64 Str::headline Str::initials Str::inlineMarkdown Str::is Str::isAscii Str::isJson Str::isUlid Str::isUrl Str::isUuid Str::kebab Str::lcfirst Str::length Str::limit Str::lower Str::markdown Str::mask Str::match Str::matchAll Str::isMatch Str::orderedUuid Str::padBoth Str::padLeft Str::padRight Str::password Str::plural Str::pluralStudly Str::position Str::random Str::remove Str::repeat Str::replace Str::replaceArray Str::replaceFirst Str::replaceLast Str::replaceMatches Str::replaceStart Str::replaceEnd Str::reverse Str::singular Str::slug Str::snake Str::squish Str::start Str::startsWith Str::studly Str::substr Str::substrCount Str::substrReplace Str::swap Str::take Str::title Str::toBase64 Str::transliterate Str::trim Str::ltrim Str::rtrim Str::ucfirst Str::ucsplit Str::ucwords Str::upper Str::ulid Str::unwrap Str::uuid Str::uuid7 Str::wordCount Str::wordWrap Str::words Str::wrap str trans trans_choice
Плавні рядки
after afterLast apa append ascii basename before beforeLast between betweenFirst camel charAt classBasename chopStart chopEnd contains containsAll counted decrypt deduplicate dirname doesntContain doesntEndWith doesntStartWith encrypt endsWith exactly excerpt explode finish fromBase64 hash headline initials inlineMarkdown is isAscii isEmpty isNotEmpty isJson isUlid isUrl isUuid kebab lcfirst length limit lower markdown mask match matchAll isMatch newLine padBoth padLeft padRight pipe plural position prepend remove repeat replace replaceArray replaceFirst replaceLast replaceMatches replaceStart replaceEnd scan singular slug snake split squish start startsWith stripTags studly substr substrReplace swap take tap test title toBase64 toHtmlString toUri transliterate trim ltrim rtrim ucfirst ucsplit ucwords unwrap upper when whenContains whenContainsAll whenDoesntEndWith whenDoesntStartWith whenEmpty whenNotEmpty whenStartsWith whenEndsWith whenExactly whenNotExactly whenIs whenIsAscii whenIsUlid whenIsUuid whenTest wordCount words wrap
Рядки
__()
Функція __ перекладає заданий рядок або ключ перекладу за допомогою ваших мовних файлів:
echo __('Welcome to our application');
echo __('messages.welcome');
Якщо вказаного рядка чи ключа перекладу не існує, функція __ повернає передане значення. Тож у прикладі вище функція __ повернула б messages.welcome, якби такого ключа перекладу не було.
class_basename()
Функція class_basename повертає назву заданого класу без його простору імен:
$class = class_basename('Foo\Bar\Baz');
// Baz
e()
Функція e виконує PHP-функцію htmlspecialchars, у якій опція double_encode за замовчуванням дорівнює true:
echo e('<html>foo</html>');
// <html>foo</html>
preg_replace_array()
Функція preg_replace_array послідовно замінює в рядку заданий шаблон значеннями з масиву:
$string = 'The event will take place between :start and :end';
$replaced = preg_replace_array('/:[a-z_]+/', ['8:30', '9:00'], $string);
// The event will take place between 8:30 and 9:00
Str::after()
Метод Str::after повертає все, що йде в рядку після заданого значення. Якщо значення в рядку немає, буде повернуто цілий рядок:
use Illuminate\Support\Str;
$slice = Str::after('This is my name', 'This is');
// ' my name'
Str::afterLast()
Метод Str::afterLast повертає все, що йде в рядку після останнього входження заданого значення. Якщо значення в рядку немає, буде повернуто цілий рядок:
use Illuminate\Support\Str;
$slice = Str::afterLast('App\Http\Controllers\Controller', '\\');
// 'Controller'
Str::apa()
Метод Str::apa перетворює заданий рядок на заголовний регістр за настановами 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("Hello XSS!");
Str::is()
Метод Str::is визначає, чи відповідає заданий рядок заданому шаблону. Зірочки можна використовувати як символи підстановки:
use Illuminate\Support\Str;
$matches = Str::is('foo*', 'foobar');
// true
$matches = Str::is('baz*', 'foobar');
// false
Вимкнути чутливість до регістру можна, задавши аргументу ignoreCase значення true:
use Illuminate\Support\Str;
$matches = Str::is('*.jpg', 'photo.JPG', ignoreCase: true);
// true
Str::isAscii()
Метод Str::isAscii визначає, чи є заданий рядок 7-бітним ASCII:
use Illuminate\Support\Str;
$isAscii = Str::isAscii('Taylor');
// true
$isAscii = Str::isAscii('ü');
// false
Str::isJson()
Метод Str::isJson визначає, чи є заданий рядок коректним JSON:
use Illuminate\Support\Str;
$result = Str::isJson('[1,2,3]');
// true
$result = Str::isJson('{"first": "John", "last": "Doe"}');
// true
$result = Str::isJson('{first: "John", last: "Doe"}');
// false
Str::isUrl()
Метод Str::isUrl визначає, чи є заданий рядок коректним URL:
use Illuminate\Support\Str;
$isUrl = Str::isUrl('http://example.com');
// true
$isUrl = Str::isUrl('laravel');
// false
Метод isUrl вважає коректними чимало протоколів. Втім, ви можете вказати, які протоколи вважати коректними, передавши їх методу isUrl:
$isUrl = Str::isUrl('http://example.com', ['http', 'https']);
Str::isUlid()
Метод Str::isUlid визначає, чи є заданий рядок коректним ULID:
use Illuminate\Support\Str;
$isUlid = Str::isUlid('01gd6r360bp37zj17nxb55yv40');
// true
$isUlid = Str::isUlid('laravel');
// false
Str::isUuid()
Метод Str::isUuid визначає, чи є заданий рядок коректним UUID:
use Illuminate\Support\Str;
$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');
// true
$isUuid = Str::isUuid('laravel');
// false
Ви можете також перевірити, чи відповідає заданий UUID специфікації певної версії (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("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::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("Hello XSS!");
is
Метод is визначає, чи відповідає заданий рядок заданому шаблону. Зірочки можна використовувати як символи підстановки
use Illuminate\Support\Str;
$matches = Str::of('foobar')->is('foo*');
// true
$matches = Str::of('foobar')->is('baz*');
// false
isAscii
Метод isAscii визначає, чи є заданий рядок рядком ASCII:
use Illuminate\Support\Str;
$result = Str::of('Taylor')->isAscii();
// true
$result = Str::of('ü')->isAscii();
// false
isEmpty
Метод isEmpty визначає, чи є заданий рядок порожнім:
use Illuminate\Support\Str;
$result = Str::of(' ')->trim()->isEmpty();
// true
$result = Str::of('Laravel')->trim()->isEmpty();
// false
isNotEmpty
Метод isNotEmpty визначає, чи не є заданий рядок порожнім:
use Illuminate\Support\Str;
$result = Str::of(' ')->trim()->isNotEmpty();
// false
$result = Str::of('Laravel')->trim()->isNotEmpty();
// true
isJson
Метод isJson визначає, чи є заданий рядок коректним JSON:
use Illuminate\Support\Str;
$result = Str::of('[1,2,3]')->isJson();
// true
$result = Str::of('{"first": "John", "last": "Doe"}')->isJson();
// true
$result = Str::of('{first: "John", last: "Doe"}')->isJson();
// false
isUlid
Метод isUlid визначає, чи є заданий рядок ULID:
use Illuminate\Support\Str;
$result = Str::of('01gd6r360bp37zj17nxb55yv40')->isUlid();
// true
$result = Str::of('Taylor')->isUlid();
// false
isUrl
Метод isUrl визначає, чи є заданий рядок URL:
use Illuminate\Support\Str;
$result = Str::of('http://example.com')->isUrl();
// true
$result = Str::of('Taylor')->isUrl();
// false
Метод isUrl вважає коректними чимало протоколів. Втім, ви можете вказати, які протоколи вважати коректними, передавши їх методу isUrl:
$result = Str::of('http://example.com')->isUrl(['http', 'https']);
isUuid
Метод isUuid визначає, чи є заданий рядок UUID:
use Illuminate\Support\Str;
$result = Str::of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c')->isUuid();
// true
$result = Str::of('Taylor')->isUuid();
// false
Ви можете також перевірити, чи відповідає заданий UUID специфікації певної версії (1, 3, 4, 5, 6, 7 або 8):
use Illuminate\Support\Str;
$isUuid = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->isUuid(version: 4);
// true
$isUuid = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->isUuid(version: 1);
// false
kebab
Метод kebab перетворює заданий рядок на kebab-case:
use Illuminate\Support\Str;
$converted = Str::of('fooBar')->kebab();
// foo-bar
lcfirst
Метод lcfirst повертає заданий рядок, у якому перший символ переведено в нижній регістр:
use Illuminate\Support\Str;
$string = Str::of('Foo Bar')->lcfirst();
// foo Bar
length
Метод length повертає довжину заданого рядка:
use Illuminate\Support\Str;
$length = Str::of('Laravel')->length();
// 7
limit
Метод limit обрізає заданий рядок до вказаної довжини:
use Illuminate\Support\Str;
$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20);
// The quick brown fox...
Другим аргументом можна змінити рядок, який буде дописано в кінці обрізаного рядка:
$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20, ' (...)');
// The quick brown fox (...)
Якщо ви хочете зберегти цілі слова під час обрізання, скористайтеся аргументом preserveWords. Коли він true, рядок буде обрізано до найближчої межі цілого слова:
$truncated = Str::of('The quick brown fox')->limit(12, preserveWords: true);
// The quick...
lower
Метод lower переводить заданий рядок у нижній регістр:
use Illuminate\Support\Str;
$result = Str::of('LARAVEL')->lower();
// 'laravel'
markdown
Метод markdown перетворює Markdown у стилі GitHub на HTML:
use Illuminate\Support\Str;
$html = Str::of('# Laravel')->markdown();
// <h1>Laravel</h1>
$html = Str::of('# Taylor <b>Otwell</b>')->markdown([
'html_input' => 'strip',
]);
// <h1>Taylor Otwell</h1>
Безпека Markdown
За замовчуванням Markdown підтримує сирий HTML, а це відкриває вразливість до міжсайтового скриптингу (XSS), якщо подавати туди сирий користувацький ввід. Як радить документація з безпеки CommonMark, ви можете скористатися опцією html_input, щоб екранувати чи вирізати сирий HTML, і опцією allow_unsafe_links, щоб указати, чи дозволяти небезпечні посилання. Якщо вам потрібно дозволити частину сирого HTML, проженіть скомпільований Markdown через HTML Purifier:
use Illuminate\Support\Str;
Str::of('Inject: <script>alert("Hello XSS!");</script>')->markdown([
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// <p>Inject: alert("Hello XSS!");</p>
mask
Метод mask маскує частину рядка повторюваним символом; ним можна приховувати фрагменти рядків - наприклад, адреси електронної пошти чи номери телефонів:
use Illuminate\Support\Str;
$string = Str::of('taylor@example.com')->mask('*', 3);
// tay***************
За потреби третім або четвертим аргументом методу mask можна передати від'ємні числа - тоді маскування почнеться на заданій відстані від кінця рядка:
$string = Str::of('taylor@example.com')->mask('*', -15, 3);
// tay***@example.com
$string = Str::of('taylor@example.com')->mask('*', 4, -4);
// tayl**********.com
match
Метод match повертає частину рядка, що відповідає заданому шаблону регулярного виразу:
use Illuminate\Support\Str;
$result = Str::of('foo bar')->match('/bar/');
// 'bar'
$result = Str::of('foo bar')->match('/foo (.*)/');
// 'bar'
matchAll
Метод matchAll повертає колекцію з частинами рядка, що відповідають заданому шаблону регулярного виразу:
use Illuminate\Support\Str;
$result = Str::of('bar foo bar')->matchAll('/bar/');
// collect(['bar', 'bar'])
Якщо ви вкажете у виразі групу захоплення, Laravel повернає колекцію збігів першої такої групи:
use Illuminate\Support\Str;
$result = Str::of('bar fun bar fly')->matchAll('/f(\w*)/');
// collect(['un', 'ly']);
Якщо збігів не знайдено, буде повернуто порожню колекцію.
isMatch
Метод isMatch повертає true, якщо рядок відповідає заданому регулярному виразу:
use Illuminate\Support\Str;
$result = Str::of('foo bar')->isMatch('/foo (.*)/');
// true
$result = Str::of('laravel')->isMatch('/foo (.*)/');
// false
newLine
Метод newLine дописує до рядка символ «кінець рядка»:
use Illuminate\Support\Str;
$padded = Str::of('Laravel')->newLine()->append('Framework');
// 'Laravel
// Framework'
padBoth
Метод padBoth обгортає 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!