При необходимости динамически генерировать веб-ссылки для статей возникают закономерные вопросы о том, как правильно следует их оформлять.
Транслитерация
В случае неимоверного желания использовать в ссылках русские слова, все же может оказаться лучше преобразовывать их в латиницу транслитом. Этим можно решить ряд проблем в некоторых браузерах, а также такие ссылки будут выглядеть чуть более читаемыми для иностранных посетителей сайта.
Реализация проста:
// массив замен $converter = array('а' => 'a', 'б' => 'b', 'в' => 'v', ...); // быстрая замена $string = strtr($string, $converter);
Граничные эффекты
Если выбор названия веб-ссылки лежит на пользователе, то не стоит ожидать от него чудес разумности. Избавиться от пробелов, символов табуляции и прочих бессмысленных символов в начале и конце строки поможет обычная фунция trim:
$string = trim($string);
Уничтожение спецсимволов
В некоторых случаях при автоматическом составлении заголовков в них попадают различные знаки пунктуации, слэши и другие символы, которым нечего делать во фрагменте URL. Их необходимо вырезать или заменять на нейтральные символы. Также следует поступать и с символами пробела. Одним из вариантов может быть замена на дефисы любых символов, не являющихся цифрами или латинскими буквами. При этом в случае двух замен подряд заменяющие дефисы должны склеиваться.
Это реализуется одной строкой при помощи regex’а:
$string = preg_replace('/[^a-z0-9]+/', '-', strtolower($string));
Эта строка также переводит все символы в нижний регистр. Отметим, что после выполнения данной замены следует проверять, не схлопнулась ли вся исходная строка в один единственный дефис. Это означает, что все символы в исходной строке не были цифрами или латинскими буквами.
Подчеркивания или дефисы
Один из не самых однозначных вопросов заключается в том, какой символ использовать для разделения слов в URL – подчеркивание или тире (дефис). В целом, этот вопрос фактически относится лишь к тому, как поисковые системы станут интерпретировать используемые на вашем сайте ссылки. А вот интерпретируют данные поисковые системы эти разделители по-разному.
Так, например, для поисковика MS Bing дефисы и подчеркивания в качестве разделителей неразличимы. А вот поисковик Google, согласно заявлению его представителей, считает дефисы разделителями, а подчеркивания просто игнорирует. Так, выражение “erinome-lane” в адресной строке для Google преобразуются в “erinome lane”, а выражение “erinome_lane” будет восприниматься слитно – “erinomelane”.
Кратко: на настоящий момент в URL рекомендуется использовать тире вместо подчеркиваний.
Хорошая статья! Спасибо
Лаконично и по сути!
Мне понравилось как вы предложили решить эту проблему
Как раз то, что искала. Спасибо.