Laravel представляє метод Str::replaceStart для точних змін рядків, що дозволяє розробникам змінювати текст лише на початку рядка, забезпечуючи контроль над маніпуляцією префіксами
Метод replaceStart пропонує умовну заміну, базуючись на префіксах рядків:
use Illuminate\Support\Str;
// Успішна заміна
$replaced = Str::replaceStart('Hello', 'Laravel', 'Hello World');
// Результат: 'Laravel World'
// Без заміни (не починається з 'World')
$replaced = Str::replaceStart('World', 'Laravel', 'Hello World');
// Результат: 'Hello World'
Цей метод є особливо корисним у системах нормалізації шляхів і URL:
class PathNormalizer
{
public function standardizeProtocol(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 unifySubdomain(string $url, string $targetDomain)
{
// Заміна www на цільовий домен
$url = Str::replaceStart('www.', $targetDomain . '.', $url);
// Заміна staging на цільовий домен
$url = Str::replaceStart('staging.', $targetDomain . '.', $url);
return $url;
}
public function normalizeApiPath(string $endpoint)
{
// Видалення ведучого /api, якщо є
return Str::replaceStart('/api', '', $endpoint);
}
}
Метод replaceStart забезпечує точну маніпуляцію рядками, концентруючись лише на префіксах, що робить його ідеальним для нормалізації URL, очищення шляхів та трансформацій даних, де необхідна умовна заміна