Laravel
February 22
Замена префиксов строк с методом `replaceStart`
Требуется заменить текст в начале строки? Метод `Str::replaceStart
` в Laravel предлагает аккуратный способ модифицировать строки только тогда, когда они начинаются с определенного содержимого.
Базовое использование
Замена текста в начале строки:
use Illuminate\Support\Str; // Успешная замена $replaced = Str::replaceStart('Hello', 'Laravel', 'Hello World'); // Результат: 'Laravel World' // Без замены (не начинается с 'World') $replaced = Str::replaceStart('World', 'Laravel', 'Hello World'); // Результат: 'Hello World'
Реальный пример
Рассмотрим, как его можно использовать в форматтере URL:
```php class UrlFormatter { public function normalizeProtocol(string $url, string $protocol = 'https') { // Замена http:// на https:// $url = Str::replaceStart('http://', $protocol . '://', $url); // Добавление протокола, если он отсутствует if (!str_starts_with($url, $protocol . '://')) { $url = $protocol . '://' . $url; } return $url; } public function standardizeDomain(string $url, string $mainDomain) { // Замена www основным доменом $url = Str::replaceStart('www.', $mainDomain . '.', $url); // Замена dev основным доменом $url = Str::replaceStart('dev.', $mainDomain . '.', $url); return $url; } public function cleanupApiEndpoint(string $endpoint) { // Удаление ведущего /api, если присутствует return Str::replaceStart('/api', '', $endpoint); } } // Использование $formatter = new UrlFormatter(); echo $formatter->normalizeProtocol('http://example.com'); // Вывод: 'https://example.com' echo $formatter->standardizeDomain('www.example.com', 'app'); // Вывод: 'app.example.com' echo $formatter->cleanupApiEndpoint('/api/users'); // Вывод: '/users'
Метод `replaceStart
` обеспечивает точный контроль над модификацией строки, когда необходимо задать контент в начале строки.