【发布时间】:2010-10-21 18:29:54
【问题描述】:
我正在将网页中的文本/html 解析为 xml 提要,文本/html 编码为 iso-8895-1,而 XML 提要必须为 UTF-8。我使用了 html 实体,但不得不手动替换大量字符,这是我目前所拥有的(仍然没有解析所有文本)
$desc = str_replace(array("\n", "\r", "\r\n"),"",$desc);
$desc = str_replace(array("’","‘","”","“"),"'",$desc);
$desc = str_replace("£","£",$desc);
$desc = str_replace("é","é",$desc);
$desc = str_replace("²","2",$desc);
$desc = str_replace(array("-","•"),"‐",$desc);
$desc = htmlentities($desc, ENT_QUOTES, "UTF-8");
【问题讨论】:
-
看起来您正在通过将字符串粘合在一起来构建 XML。不要那样做。使用 XML 库,您可以告诉它您的输出编码,它会满足您的任何编码需求。 (
htmlentities不会这样做,因为除了少数之外,所有这些都未定义用于任意 XML) -
实际上我正在使用 $xml = new DOMDocument('1.0', 'UTF-8'); 构建我的 xml并遍历附加子节点和文本节点的数组。这只是为其中一个节点准备文本。