Author:
blessmaster
Description: транслитерация url для seo
Language: PHP
/**
* Функция необратимой транслитерации для SEO.
* Текст в таком транслите утрачивает однозначность и восстановлению не поделижит,
* (при этом всё-таки сохраняя читабельность для посетителей сайта)
* так же как *не может* быть напрямую использован как уникальный идентификатор
* при соответствующем ограничении наложенном на кириллический заголовок.
* Данную проблему можно решить двумя путями - ставить ограничение именно на
* транслитерированный заголовок, для чего завести в базе соответствующее поле,
* либо дополнять ссылку реальным идентификатором.
*
* Но при всех недостатках этот транслит понятен поисковикам
* и послужит дополнительным бонусом при ранжировании поисковой
* выдачи (за некоторыми исключениями, описанными в этой статье:
* http://blessmaster.livejournal.com/115715.html
*
* @param string $text текст для транслитерации
* @return string транслитерированную строку
* @author BlessMaster (deep-dream@ya.ru)
*/
function wct_seo_rus2lat($text) {
$text = mb_strtoupper($text, 'UTF-8');
$exchange = array(
'|А|si'=>'a',
'|Б|si'=>'b',
'|В|si'=>'v',
'|Г|si'=>'g',
'|Д|si'=>'d',
'|Е|si'=>'e',
'|Ё|si'=>'e',
'|Ж|si'=>'j',
'|З|si'=>'z',
'|И|si'=>'i',
'|Й|si'=>'y',
'|К|si'=>'k',
'|Л|si'=>'l',
'|М|si'=>'m',
'|Н|si'=>'n',
'|О|si'=>'o',
'|П|si'=>'p',
'|Р|si'=>'r',
'|С|si'=>'s',
'|Т|si'=>'t',
'|У|si'=>'u',
'|Ф|si'=>'f',
'|Х|si'=>'kh',
'|Ц|si'=>'c',
'|Ч|si'=>'ch',
'|Ш|si'=>'sh',
'|Щ|si'=>'shch',
'|Ъ|si'=>'',
'|Ы|si'=>'y',
'|Ь|si'=>'',
'|Э|si'=>'e',
'|Ю|si'=>'yu',
'|Я|si'=>'ya',
'| |si'=>'-', // сохраняем пробел от перехода в %20 понятным гуглу способом
// подчёркивание не годится, так как гугл не понимает его
'|,|si'=>'..', // сохраняем запятую
"|'|si"=>'-',
);
$text = preg_replace(array_keys($exchange), array_values($exchange), $text);
// Остальные символы - уже никуда не денешься
$text = rawurlencode($text);
// Несколько позже, функция будет дополнена другими кириллическими символами
// после проведения соответствующего исследования, если это кому-нибудь нужно
return $text;
}
|
Recent pastes:
biophreak (Plain Text)
Raik (PHP)
MUSbKA (Plain Text)
MUSbKA (Plain Text)
nekitozzz (C++)
nekitozzz (Plain Text)
nekitozzz (C++)
ksurent (Perl)
MUSbKA (C++)
stalin_alex (C++)
dzantiev (Plain Text)
unreal (C++)
eug2b (Plain Text)
|