utf 8 — заменить кирил на западные символы (оба в utf-8)

У меня проблема с кириллами. Наш сайт находится в utf-8 и принимает эти символы, однако наши внешние источники, где мы передаем символы, не принимают их. Мы пытаемся передать имена людей. У них есть другие разные кодировки (например, iso-8859-1).

Есть ли какой-нибудь простой способ в PHP сначала вручную преобразовать каждый символ кириллицы в его эквивалентный западный символ в то время как в utf-8, чтобы избежать неправильного преобразования? Если использовать методы преобразования напрямую, все это попадает в вопросительные знаки.

0

Решение

Я нашел решение, которое решило мою проблему. Функция ниже преобразует каждый символ кириллицы в эквивалентные западные символы. Имена довольно точно конвертируются с помощью этой функции.

Когда символы заменяют, я мог бы использовать utf8_decode (), чтобы преобразовать его в iso-8859-1.

function do_translit($st) {
$replacement = array(
"й"=>"i","ц"=>"c","у"=>"u","к"=>"k","е"=>"e","н"=>"n",
"г"=>"g","ш"=>"sh","щ"=>"sh","з"=>"z","х"=>"x","ъ"=>"\'",
"ф"=>"f","ы"=>"i","в"=>"v","а"=>"a","п"=>"p","р"=>"r",
"о"=>"o","л"=>"l","д"=>"d","ж"=>"zh","э"=>"ie","ё"=>"e",
"я"=>"ya","ч"=>"ch","с"=>"c","м"=>"m","и"=>"i","т"=>"t",
"ь"=>"\'","б"=>"b","ю"=>"yu",
"Й"=>"I","Ц"=>"C","У"=>"U","К"=>"K","Е"=>"E","Н"=>"N",
"Г"=>"G","Ш"=>"SH","Щ"=>"SH","З"=>"Z","Х"=>"X","Ъ"=>"\'",
"Ф"=>"F","Ы"=>"I","В"=>"V","А"=>"A","П"=>"P","Р"=>"R",
"О"=>"O","Л"=>"L","Д"=>"D","Ж"=>"ZH","Э"=>"IE","Ё"=>"E",
"Я"=>"YA","Ч"=>"CH","С"=>"C","М"=>"M","И"=>"I","Т"=>"T",
"Ь"=>"\'","Б"=>"B","Ю"=>"YU",
);

foreach($replacement as $i=>$u) {
$st = mb_eregi_replace($i,$u,$st);
}
return $st;
}

Ссылка: http://php.net/manual/en/function.mb-eregi-replace.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector