Para convertir un texto de cirílico a latino o viceversa, se puede hacer de la siguiente forma, que es bastante sencilla aunque no es seguro 100% (cosas del idioma)
$cyr = array('а','б','в','г','д','e','ж','з','и','й','к','л','м','н','о','п','р','с','т','у', 'ф','х','ц','ч','ш','щ','ъ','ь','ю','я','А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У', 'Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ь', 'Ю','Я' );
$lat = array( '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' ,'sht' ,'a' ,'y' ,'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' ,'Sht' ,'A' ,'Y' ,'Yu' ,'Ya' );
/*Variable que contiene el texto cirílico a latino*/
$cirilico_en_latino = str_replace($cyr, $lat, $cirilico);
/*Variable que contiene el texto latino a cirílico*/
$latino_en_cirilico = str_replace($lat, $cyr, $latino);
echo "$cirilico_en_latino $latino_en_cirilico";