Спасибо за скрипт!
Оказался очень к месту.
Заточил вариант с preg_replace для собственных нужд:
- оформил как функцию
- изменил таблицу для того, чтобы обеспечить однозначное соответствие(э как e' вместо просто e)
- добавил букву 'ё' (ну нравится она мне

)
- изменил Ъ c " на ~
- слепил функцию latinica -> win1251.
Для того, чтобы получить код для другой кодировки можно:
a) использовать w1251_to_lat(convert_cyr_string($s,'k','w'))
б) внутри функции вызывать preg_replace ($pattern, $replacement, convert_cyr_string($s,'k','w'));
в) Прогнать файл с кодом функций через любой конвертер кодировки текста.
Вот результат издевательства над кодом:
#--------------------------------------------------------
function w1251_to_lat($s) {
$pattern = array(
"'а'","'б'","'в'","'г'","'д'","'е'","'ё'","'ж'","'з'","'и'","'й'","'к'","'л'","'м'","'н'","'о'","'п'","'р'","'с'","'т'","'у'","'ф'","'х'","'ц'","'ч'","'ш'","'щ'","'ъ'","'ы'","'ь'","'э'","'ю'","'я'",
"'А'","'Б'","'В'","'Г'","'Д'","'Е'","'Ё'","'Ж'","'З'","'И'","'Й'","'К'","'Л'","'М'","'Н'","'О'","'П'","'Р'","'С'","'Т'","'У'","'Ф'","'Х'","'Ц'","'Ч'","'Ш'","'Щ'","'Ъ'","'Ы'","'Ь'","'Э'","'Ю'","'Я'" );
$replacement = array(
"a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "c", "ch", "sh", "sch","~", "y", "'", "e'", "ju", "ja",
"A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "H", "C", "Ch", "Sh", "Sch","~", "Y", "'", "E'", "Ju", "Ja" );
return preg_replace ($pattern, $replacement, $s);
}
function lat_to_win1251($s) {
$replacement = array(
"Щ","щ","Ш","ш","Ю","ю","Я","я","Ё","ё","Ж","ж","Ч","ч","Э","э",
"а","б","в","г","д","е","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ъ","ы","ь",
"А","Б","В","Г","Д","Е","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ъ","Ы","Ь" );
$pattern = array(
"'Sch'", "'sch'", "'Sh'","'sh'","'Ju'","'ju'","'Ja'","'ja'", "'Yo'", "'yo'", "'Zh'","'zh'","'Ch'","'ch'","\"E'\"", "\"e'\"",
"'a'", "'b'", "'v'", "'g'", "'d'", "'e'", "'z'", "'i'", "'j'", "'k'", "'l'", "'m'", "'n'", "'o'", "'p'", "'r'", "'s'", "'t'", "'u'", "'f'", "'h'", "'c'", "'~'", "'y'", "\"'\"",
"'A'", "'B'", "'V'", "'G'", "'D'", "'E'", "'Z'", "'I'", "'J'", "'K'", "'L'", "'M'", "'N'", "'O'", "'P'", "'R'", "'S'", "'T'", "'U'", "'F'", "'H'", "'C'", "'~'", "'Y'", "\"'\"" );
return preg_replace ($pattern, $replacement, $s);
}
/* Test code:
echo "Translit: ". w1251_to_lat('а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я') . '<br>';
echo "Transli2: ". w1251_to_lat(strtoupper('а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я')) . '<br>';
$s = w1251_to_lat('Юркий плюшевый щенок Полуэктович выпендривался в подъезде стоя на пьедестале и дразнил цыган поцеживая мозги полёвки.');
echo $s.'<br>';
echo lat_to_win1251($s);
*/