因此,首先,我有一个XML文件数组。这些文件需要迭代并检查某些'无法识别'的十六进制字符,并替换为正常的UTF-8文本或某种占位符。使用php删除xml文件中的十六进制字符
我已经尝试遍历文件并使用str_replace和preg_replace替换十六进制代码,但没有运气。我的最终问题是,当我尝试使用simpleXML打开这些文件时,我收到有关'非UTF字符'的错误。
这是我到目前为止有:
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加载文件]:./04R_P455_S1157.xml: 5:解析器错误:输入不正确UTF-8,指示编码! Bytes:0x97 0x0D 0x0A 0x69 in C:\ xampp \ htdocs \ hint_updater \ libraries \ hint_updater_classes.php on line 130
仍然没有运气,我试过在这个线程中建议的一切,但是preg_replace没有出现替换十六进制代码的所有实例。
我不明白。你能举一个你的XML文件目前的样子吗? – Artefacto 2010-08-10 13:57:22
这是无关紧要的,XML文件结构很好......但人们有一些如何设法复制和粘贴非法字符到文件中,从而导致文件中不需要的十六进制代码。 – ThinkingInBits 2010-08-10 14:00:54
XML文件可以是4000多行数据,因此它们是大文件。 – ThinkingInBits 2010-08-10 14:58:13