PHP транслит!

Транслит... Какое томное, волнующее слово! Вот и поговорим немного о транслитерации. Пишем wap-сайт? Без транслита - никуда. Только посетителей терять.

Как же грамотно выполнить транслитерацию в PHP? А очень просто! В этом нам поможет функция strtr(). Отличная, скажу я вам, функция!
Имеет два формата вызова:

string strtr ( string str, string from, string to) - для замены типа "символ-на-символ". Возвращается копия строки str, в которой символ from[i] заменен на символ to[i] для всех допустимых i.
string strtr ( string str, array replace_pairs) - для замены типа "строка-на-строку". В массиве replace_pairs описаны возможные замены. Ключ элемента массива - это то, что заменяется, а значение элемента массива с этим ключом - то, на что заменяется. Возвращается копия строки str, с выполненными заменами.

Т.к. в транслите некоторые кириллические символы записываются двумя и более символами (ш = sh и т.д.), то будем использовать второй формат вызова strtr().

Напишем небольшой скрипт, который можно будет потом подключать к скриптам, где нужно выполнить транслитерацию.

Файл translit.php  <?    $tr = array(     "Ґ"=>"G","Ё"=>"YO","Є"=>"E","Ї"=>"YI","І"=>"I",     "і"=>"i","ґ"=>"g","ё"=>"yo","№"=>"#","є"=>"e",     "ї"=>"yi","А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",     "Д"=>"D","Е"=>"E","Ж"=>"ZH","З"=>"Z","И"=>"I",     "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",     "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",     "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",     "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"'","Ы"=>"YI","Ь"=>"",     "Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",     "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"zh",     "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",     "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",     "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",     "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"'",     "ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya"    );        function translit( $cyr_str) {     global $tr;     return strtr($cyr_str,$tr);    }  ?>    Пример использования.  Файл use.php  <?     require("translit.php");     $s = "Привет! :)";     if ($HTTP_GET_VARS["enc"]=="latin")      echo translit($s);     else      echo $s;  ?>  

При вызове скрипта через use.php?enc=latin - будет выдаваться "Privet! :)", при иных значениям enc - "Привет! :)".

P.S.Приведенный пример отличается простотой и незатейливостью. На то он и пример. Перед реализацией же транслитерации в условиях, приближенных к боевым, советую ознакомиться с моей статьей "Тотальная буферизация PHP-скриптов и... Светлое будущее" и узнать оттуда, как можно реализовать транслитерацию целых страниц "малой кровью".