Наверное каждый веб-программист хотя бы раз в жизни сталкивался с такой задачей, как перевод символов кириллицы, точнее их замена латинскими (английскими). Для этого в принципе понадобится одна стандартная PHP-функция.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function translitIt($str){ $tr = array( "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D", "Е"=>"E","Ё"=>"YO","Ж"=>"J","З"=>"Z","И"=>"I", "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N", "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T", "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"C","Ч"=>"CH", "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"", "Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b", "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"yo","ж"=>"j", "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l", "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r", "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h", "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y", "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya" ); return strtr($str,$tr); } |
Думаю не трудно понять суть работы этой функции.
Пример реализации — https://i-leon.ru/translit/
Транслитерация URL на PHP.
В основном задача транслитерации в web-программировании становится при построении URL с заголовка страницы на русском языке. Поэтому необходимо только добавить свою интерпритацию для таких символов как пробел и после «прогона» через эту функцию убрать остальные лишние символы. В результате получится код примерно такого вида:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
function translitIt($str){ $tr = array( "А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d", "Е"=>"e","Ё"=>"yo","Ж"=>"j","З"=>"z","И"=>"i", "Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n", "О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t", "У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"c","Ч"=>"ch", "Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"", "Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b", "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"yo","ж"=>"j", "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l", "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r", "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h", "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y", "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya", " "=> "_", "."=> "", "/"=> "_" ); return strtr($str,$tr); } if (preg_match('/[^A-Za-z0-9_\-]/', $urlstr)) { $urlstr = translitIt($urlstr); $urlstr = preg_replace('/[^A-Za-z0-9_\-]/', '', $urlstr); } |
В результате $urlstr содержит валидный URL.