Потрібно замінити текст на початку рядка? Метод 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:
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 дає точний контроль над змінами рядків, коли потрібно працювати з вмістом на початку рядка.
Якщо цей посібник був корисний, підпишіться на мою щоденну розсилку та слідкуйте за мною на X/Twitter і Bluesky. Це дуже допомагає!
Перекладено з: Replace String Prefixes with Laravel’s replaceStart Method