Итак, для начала у меня есть массив файлов XML.Эти файлы должны быть повторены и проверены на наличие определенных «нераспознанных» шестнадцатеричных символов и заменены обычным текстом UTF-8, или каким-то другим заполнителем.
Я пробовал перебирать файлы и заменять шестнадцатеричные кодыиспользуя и str_replace и preg_replace без удачи.Моя конечная проблема заключается в том, что я получаю ошибки о «не-UTF-символах» при попытке открыть эти файлы с помощью simpleXML.
Вот что у меня есть:
class HexadecimalConverter {
public $filenames = array();
public function __construct($filenames) {
$this->filenames = $filenames;
$this->removeHex();
}
public function removeHex() {
foreach ($this->filenames as $key => $value) {
$contents = file_get_contents($value);
$contents = preg_replace("/\x96/", '–', $contents);
$contents = preg_replace("/\x97/", '—', $contents);
$contents = preg_replace("/\x85/", "...", $contents);
$contents = preg_replace("/\xBA/", "", $contents);
file_put_contents($value, $contents);
}
}
}
Вотошибка, которую я пытаюсь исправить: Предупреждение: simplexml_load_file () [function.simplexml-load-file]: ./04R_P455_S1157.xml:5: ошибка синтаксического анализатора: неверный ввод UTF-8, укажите кодировку!Байт: 0x97 0x0D 0x0A 0x69 в C: \ xampp \ htdocs \ hint_updater \ library \ hint_updater_classes.php в строке 130
Все еще не повезло, я попробовал все предложенное в этой теме, но preg_replace этого не делаетпохоже, заменяет все экземпляры шестнадцатеричного кода.