В настоящее время я собираю некоторые данные из Интернета и преобразую их в XML-документы.
- удаляемый документ - это utf-8 в соответствии с его метатегами
Проблема в том, что некоторые данные содержат иностранные символы, я не могу найти способ надежного преобразования их в дружественные к XML / utf-8 сущности, следующие ошибки - это то, что мне удалось найти, прочитав, в идеале мне бы хотелось решение, которое будет работать постоянно.
Пример 1 работает правильно, пример 2 не работает. Мое исследование зафиксировало пример 1, но, похоже, это не общее решение.
Côte d'Ivoire
Côte d'Ivoire (correct)
Мне удалось правильно разобрать - ô -, используя следующую функцию на моем xpath.
$w->text(charset_decode_utf_8((string)$match->a));
function charset_decode_utf_8($string) {
if(@!ereg("[\200-\237]",$string) && @!ereg("[\241-\377]",$string)) {
return $string;
}
$string = preg_replace("/([\340-\357])([\200-\277])([\200-\277])/e","'&#'.((ord('\\1')-224)*4096 + (ord('\\2')-128)*64 + (ord('\\3')-128)).';'",$string);
$string = preg_replace("/([\300-\337])([\200-\277])/e","'&#'.((ord('\\1')-192)*64+(ord('\\2')-128)).';'",$string);
return $string;
}
ÖFB Stiegl Cup
ÖFB Stiegl Cup (wrong)
К сожалению, ... - он превращается в двойную сущность. Я понятия не имею, как заставить его преобразовать в правильную HTML-сущность.
Я пытался:
- с использованием кодировки iso-8859-1 при создании моего xml-документа
- с использованием htmlentities с кодировкой utf-8
Любая помощь будет принята с благодарностью, так как я рву свои волосы, пытаясь заставить вещи спасти правильно.