【发布时间】:2013-10-31 15:10:10
【问题描述】:
我正在尝试解析从 Wordpress 的导出功能生成的 XML 文件。我已经从块中抓取了文本,但是当我回显文本时它的格式错误,我认为是 ASCII。
<?php
header("Content-Type: text/plain; charset: UTF-8;");
$source = file_get_contents("blog.wordpress.2013-10-31.xml");
$xml = simplexml_load_string($source);
$items = $xml->channel->item;
foreach($items as $item) {
$namepsaces = $item->getNameSpaces(true);
$content = $item->children($namepsaces['content']);
if($content != '') {
echo '#' . $item->title . "#\n";
echo $content->encoded;
echo "\n\n\n";
}
}
所以As the BBC’s 会变成As the BBC’s。无论如何我可以阻止这一切?
编辑:我附加了 echo '“Test”';到标题之后,我在浏览器中看到“Test”,所以这似乎不是 SimpleXML 问题。
【问题讨论】:
-
AFAIK Wordpress 导出功能不会导出有效的 XML,它可能也无法正确处理字符和传输编码。请确保 XML 有效,然后再假设错误出现在您的问题代码中。
-
它不是 US-ASCII,它更像是一些 Latin-1 或 Windows-1252 - 但编码为 UTF-8,显示为 UTF-8,然后再次编码为 UTF-8 以显示为你的问题。 - 很可能只是fileformat.info/info/unicode/char/2019/index.htm
-
它现在已修复,我认为这是我 Mac 上 PHP 的问题。我通过自制软件安装了 PHP 5.5.5,但 LaunchAgents 中的 plist 文件仍然指向 5.5.1。我不知道,我已经解决了这个问题,重新启动并瞧,一切看起来都应该。