Раньше пользовался функцией:
function GetInTranslit($string) { $string=strtr($string,"абвгдеёзийклмнопрстуфхцыэАБВГДЕЁЗИЙКЛМНОПРСТУФХЦЫЭ","abvgdeeziyklmnoprstufhcieABVGDEEZIKLMNOPRSTUFHCIE"); $string=strtr($string, array( "ж"=>"zh", " "=>"-", "ч"=>"ch", "ш"=>"sh", "щ"=>"shch", "ь"=>"", "ъ"=>"", "ю"=>"yu", "я"=>"ya", "Ж"=>"Zh", "Ч"=>"Ch", "Ш"=>"Sh", "Щ"=>"Shch", "Ь"=>"", "Ъ"=>"", "Ю"=>"Yu", "Я"=>"Ya", "і"=>"i", "І"=>"I", "ї"=>"yi", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye") ); return $string; }
но, когда текст в UTF-8 выходят крокозяблы. :( Правильный вариант:
function GetInTranslit($string) { $replace=array( "'"=>"", "`"=>"", "а"=>"a","А"=>"a", "б"=>"b","Б"=>"b", "в"=>"v","В"=>"v", "г"=>"g","Г"=>"g", "д"=>"d","Д"=>"d", "е"=>"e","Е"=>"e", "ж"=>"zh","Ж"=>"zh", "з"=>"z","З"=>"z", "и"=>"i","И"=>"i", "й"=>"y","Й"=>"y", "к"=>"k","К"=>"k", "л"=>"l","Л"=>"l", "м"=>"m","М"=>"m", "н"=>"n","Н"=>"n", "о"=>"o","О"=>"o", "п"=>"p","П"=>"p", "р"=>"r","Р"=>"r", "с"=>"s","С"=>"s", "т"=>"t","Т"=>"t", "у"=>"u","У"=>"u", "ф"=>"f","Ф"=>"f", "х"=>"h","Х"=>"h", "ц"=>"c","Ц"=>"c", "ч"=>"ch","Ч"=>"ch", "ш"=>"sh","Ш"=>"sh", "щ"=>"sch","Щ"=>"sch", "ъ"=>"","Ъ"=>"", "ы"=>"y","Ы"=>"y", "ь"=>"","Ь"=>"", "э"=>"e","Э"=>"e", "ю"=>"yu","Ю"=>"yu", "я"=>"ya","Я"=>"ya", "і"=>"i","І"=>"i", "ї"=>"yi","Ї"=>"yi", "є"=>"e","Є"=>"e" ); return $str=iconv("UTF-8","UTF-8//IGNORE",strtr($string,$replace)); }
на основе http://sono-design.ru/blog/programming/translit-v-utf-8#
Добавлено 19.01.2017
Оптимально для формирования ЧПУ:
function translit($str){ $translit=array( "А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d","Е"=>"e","Ё"=>"e","Ж"=>"zh","З"=>"z","И"=>"i","Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n","О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t","У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"ts","Ч"=>"ch","Ш"=>"sh","Щ"=>"shch","Ъ"=>"","Ы"=>"y","Ь"=>"","Э"=>"e","Ю"=>"yu","Я"=>"ya", "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"e","ж"=>"zh","з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l","м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h","ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"shch","ъ"=>"","ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya", "A"=>"a","B"=>"b","C"=>"c","D"=>"d","E"=>"e","F"=>"f","G"=>"g","H"=>"h","I"=>"i","J"=>"j","K"=>"k","L"=>"l","M"=>"m","N"=>"n","O"=>"o","P"=>"p","Q"=>"q","R"=>"r","S"=>"s","T"=>"t","U"=>"u","V"=>"v","W"=>"w","X"=>"x","Y"=>"y","Z"=>"z" ); $result=strtr($str,$translit); $result=preg_replace("/[^a-zA-Z0-9_]/i","-",$result); $result=preg_replace("/\-+/i","-",$result); $result=preg_replace("/(^\-)|(\-$)/i","",$result); return $result; }