[PHP] Создание и корректировка URL

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

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

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

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

// массив замен
$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 рекомендуется использовать тире вместо подчеркиваний.

This entry was posted in Сеть и интернет and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>