Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как сделать из строки адрес страницы (slug)

Короткий ответ

Переведите строку в нижний регистр, замените всё, кроме букв и цифр, на дефис и уберите дефисы по краям:

<?php
 
function slug(string $text): string
{
    $text = strtolower($text);
    $text = preg_replace('/[^a-z0-9]+/', '-', $text);
 
    return trim($text, '-');
}
 
echo slug('Hello, World! PHP 8.4');

Результат:

hello-world-php-8-4

Кириллица

Русские буквы сначала заменяют латинскими. Это делает расширение intl; если его нет, составьте таблицу замен для strtr():

<?php
 
$map = ['п' => 'p', 'р' => 'r', 'и' => 'i', 'в' => 'v', 'е' => 'e', 'т' => 't'];
 
echo strtr('привет', $map);

Результат:

privet

Функции из этого ответа

  • preg_replace — Заменяет всё, что подошло под регулярное выражение.
  • strtolower — Переводит латинские буквы в нижний регистр.
  • trim — Удаляет пробелы и другие символы с начала и конца строки.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.