Most solutions do not convert to single-byte encoding. I use mb_convert_encoding ($ string, 'windows-1251') to convert from UTF-8 in my case.
function ru2Lat($string) { $rus = array('','','','','','','','','','','','','','','',''); $lat = array('yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA'); $string = str_replace($rus,$lat,$string); $string = strtr($string, "", "ABVGDEZIJKLMNOPRSTUFH_I_Eabvgdezijklmnoprstufh'i'e"); return($string); } function transliterate($string){ if (!is_string($string)) return $string; return ru2lat(mb_convert_encoding($string,'windows-1251')); } function transliterate_array($a){ $c = array_map(transliterate,$a); return $c; }
Sergey
source share