Menu
Categories
[PHP] Создание и корректировка URL
March 6, 2013 Сеть и интернет

При необходимости динамически генерировать веб-ссылки для статей возникают закономерные вопросы о том, как правильно следует их оформлять.

Транслитерация

В случае неимоверного желания использовать в ссылках русские слова, все же может оказаться лучше преобразовывать их в латиницу транслитом. Этим можно решить ряд проблем в некоторых браузерах, а также такие ссылки будут выглядеть чуть более читаемыми для иностранных посетителей сайта.

Реализация проста:

// массив замен
$converter = array('а' => 'a', 'б' => 'b', 'в' => 'v', ...);
// быстрая замена
$string = strtr($string, $converter);

Граничные эффекты

Если выбор названия веб-ссылки лежит на пользователе, то не стоит ожидать от него чудес разумности. Избавиться от пробелов, символов табуляции и прочих бессмысленных символов в начале и конце строки поможет обычная фунция trim:

$string = trim($string);

Уничтожение спецсимволов

В некоторых случаях при автоматическом составлении заголовков в них попадают различные знаки пунктуации, слэши и другие символы, которым нечего делать во фрагменте URL. Их необходимо вырезать или заменять на нейтральные символы. Также следует поступать и с символами пробела. Одним из вариантов может быть замена на дефисы любых символов, не являющихся цифрами или латинскими буквами. При этом в случае двух замен подряд заменяющие дефисы должны склеиваться.

Это реализуется одной строкой при помощи regex’а:

$string = preg_replace('/+/', '-', strtolower($string));

Эта строка также переводит все символы в нижний регистр. Отметим, что после выполнения данной замены следует проверять, не схлопнулась ли вся исходная строка в один единственный дефис. Это означает, что все символы в исходной строке не были цифрами или латинскими буквами.

Подчеркивания или дефисы

Один из не самых однозначных вопросов заключается в том, какой символ использовать для разделения слов в URL – подчеркивание или тире (дефис). В целом, этот вопрос фактически относится лишь к тому, как поисковые системы станут интерпретировать используемые на вашем сайте ссылки. А вот интерпретируют данные поисковые системы эти разделители по-разному.

Так, например, для поисковика MS Bing дефисы и подчеркивания в качестве разделителей неразличимы. А вот поисковик Google, согласно заявлению его представителей, считает дефисы разделителями, а подчеркивания просто игнорирует. Так, выражение “erinome-lane” в адресной строке для Google преобразуются в “erinome lane”, а выражение “erinome_lane” будет восприниматься слитно – “erinomelane”.

Кратко: на настоящий момент в URL рекомендуется использовать тире вместо подчеркиваний.

"1" Comment
  1. Хорошая статья! Спасибо

Leave a Reply




*