[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.

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

  1. Приложение должно предоставлять способ формирования адресов URL, с которыми оно сможет корректно работать.

  2. Larryrok says:

    Рады предложить нашим клиентам чудодейственное средство для похудения Mangoosteen. При помощи него реально избавиться от 15 kg за недели.

    Дерево мангустин произрастает на Филиппинах. Плоды растения имеют замечательные особенности. Во флаконе имеется около 20 плодов данного удивительного дерева. Плоды дерева мангкут помогают убрать лишнюю жировую ткань. А также замечательно влияют на человека в комплексе. Специфика производства препарата, и специальная упаковка помогают сохранить все удивительные свойства плодов.

    Основным компонентом сиропа Мангустина являются плоды с растения мангостан, в них содержится большое количество питательных элементов. Благодаря веществу окиси дифениленкетона, которое в огромных дозах имеется во фрукте, значительно притормаживаются окислительные процессы в теле. Ксантон признана одним из самых мощных антиоксидантов. В плоде дерева мангостин вдобавок содержатся различные группы витаминов и элементы. Приобрести сироп Mangoosteen можно на сайте http://mangoo77.mangoosteen.com.

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>