Я делал примерно так при аплоаде файла на сервер:
function translit_name($name)
{
$symbs = array
(
"а" => "a","б" => "b","в" => "v","г" => "g","д" => "d",
"е" => "e","ё" => "e","ж" => "j","з" => "z","и" => "i",
"й" => "iy","к" => "k","л" => "l","м" => "m","н" => "n",
"о" => "o","п" => "p","р" => "r","с" => "s","т" => "t",
"у" => "u","ф" => "f","х" => "h","ц" => "ts","ч" => "ch",
"ш" => "sh","щ" => "sch","ъ" => "","ы" => "y","ь" => "",
"э" => "e","ю" => "yu","я" => "ya", " " => "_");
return strtr(strtolower($name),$symbs);//strstr($name,$smb);
}