Привет
Нужно перевести тайтлы в eng, для использования в url.
Задача тривиальная и много раз рассмотрена в инете.
Но у меня какая-то непонятная сложность:
1. Получаем строку в UTF-8
2. Применяем к каждом отдельному символу строки (это требуется для вычленения лишних символов) strtr($str, $eng) где $eng = array(
"Є"=>"ye","І"=>"i","Ѓ"=>"G","і"=>"i","№"=>"-","є"=>"ye","ѓ"=>"g",
"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d",
"Е"=>"e","Ё"=>"yo","Ж"=>"zh",
"З"=>"z","И"=>"i","Й"=>"j","К"=>"k","Л"=>"l",
"М"=>"m","Н"=>"n","О"=>"o","П"=>"p","Р"=>"r",
"С"=>"s","Т"=>"t","У"=>"u","Ф"=>"p","Х"=>"x",
"Ц"=>"c","Ч"=>"ch","Ш"=>"sh","Щ"=>"sh",
"Ы"=>"y","Э"=>"у","Ю"=>"yu","Я"=>"ya",
"а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
"е"=>"e","ё"=>"yo","ж"=>"zh",
Так вот, в результате, strtr возвращает желаемые "замены" только для знаков пунктуации. Кирилические же символы выходят из strtr без замены.
Что делать?)
$gost = array(
"Є"=>"ye","І"=>"i","Ѓ"=>"G","і"=>"i","№"=>"-","є"=>"ye","ѓ"=>"g",
"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d",
"Е"=>"e","Ё"=>"yo","Ж"=>"zh",
"З"=>"z","И"=>"i","Й"=>"j","К"=>"k","Л"=>"l",
"М"=>"m","Н"=>"n","О"=>"o","П"=>"p","Р"=>"r",
"С"=>"s","Т"=>"t","У"=>"u","Ф"=>"p","Х"=>"x",
"Ц"=>"c","Ч"=>"ch","Ш"=>"sh","Щ"=>"sh",
"Ы"=>"y","Э"=>"у","Ю"=>"yu","Я"=>"ya",
"а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
"е"=>"e","ё"=>"yo","ж"=>"zh",
"з"=>"z",'и'=>"i","й"=>"j","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"x",
"ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
"ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
" "=>"-", "—"=>"-", "," =>"-", "." => "-"
);
$nvs = $app['dbs']['remote'] -> fetchAll("
SELECT id, title, region
FROM objects
WHERE region != 'spb'
");
foreach ($nvs as $nv) {
for ($i = 0; $i < strlen($nv['title']) ; $i++) {
$letter = substr($nv['title'], $i , 1);
echo strtr($letter, $gost);
}
}