Авг 062011
 

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

Работает просто: заменяет все символы в массиве $find на символы в массиве $replace, затем обрезает любые символы (знаки препинания, спец символы и пр.), оставляя только тире и нижнее подчеркивание. После всего заменяет пробелы на тире.

function translit($text)
{
$find=array('А','а','Б','б','В','в','Г','г','Д','д','Е','е','Ё','ё','
Ж','ж','З','з','И','и','Й','й','К','к','Л','л','М','м','
Н','н','О','о','П','п','Р','р','С','с','Т','т','У','у','
Ф','ф','Х','х','Ц','ц','Ч','ч','Ш','ш','Щ','щ','Ъ','ъ','
Ы','ы','Ь','ь','Э','э','Ю','ю','Я','я');
$replace=array('A','a','B','b','V','v','G','g','D','d','E','e','Yo','yo','
Zh','zh','Z','z','I','i','J','j','K','k','L','l','M','m','
N','n','O','o','P','p','R','r','S','s','T','t','U','u','
F','f','H','h','Ts','ts','Ch','ch','Sh','sh','Sch','sch','','','','','','','E','e','Yu','yu','Ya','ya');

    $text = str_replace($find, $replace,$text);
	$text = preg_replace ("/[^\w\d\s_-]*/","",$text);
	$text=str_replace(" ","-",$text);
    return $text;
}

пример: echo translit(‘слово’); // slovo

Дорогие читатели! Мною было принято решение закрыть комментарии на блоге. Теперь все обсуждения переносятся на недавно открытый форум, ввиду того, что формат сообщений там намного удобней для обсуждения. Не стесняйтесь задавать любые вопросы по тематике блога! Я всегда на связи.
Перейти на форум
.
 Опубликовано в 4:55 пп

Извините, форма комментирования закрыта в данный момент.