PHP DomDocument,DomXPath编码问题

时间:2010-06-28 16:04:06

标签: php encoding domdocument domxpath

我遇到了一个wordpress feed的编码问题,我似乎无法弄明白。

我正在使用DOMDocument->加载我的Feed,但后来执行了一个file_get_contents,现在正在使用 - > XMLload,结果相同。我做了XMLload,所以如果需要我可以操作feed。

我正在寻找的正确输出是- ‘ £。 如果我只是从Xpath查询回显,我得到- ‘ £。 如果我用utf8_decode回音,我得到- ? £。 好多了,但问号应该是撇号。

如果我在加载DomDocument的每个节点时循环,我会得到正确的输出。所以它似乎在XPath中处理不正确。

有什么想法吗?

Feed是http://shredeasy.com/blog/category/news/feed

这是被调用的函数:

function getPostsInCategory($feed=NULL){
    if(is_null($feed)){ echo "Wrong Usage. Need a valid Category Feed.  Most likely from getCategories()."; return false; }
    $feedx = file_get_contents($feed);
    $xml = new DOMDocument();
    $xml->loadXML($feedx);
    //$this->showDOMNode($xml);


    //$xml->load($feed);
    $xpath = new DomXPath($xml);
    $xpath->registerNamespace("content", "http://web.resource.org/rss/1.0/modules/content/");

    $cat = array();
    foreach($xml->getElementsByTagName('item') as $c){
        $elements = array();
        $elements["title"] = $xpath->query("title", $c)->item(0)->nodeValue;
        echo utf8_decode($elements["title"]);

我一直在努力解决这个问题几个小时,我一直在回到错误的地方。

感谢您的帮助!

你知道的,似乎撇号正在变成问号....天哪!我不知道这是否是唯一的问题。

1 个答案:

答案 0 :(得分:1)

回显的字符串以UTF-8编码。

  • 如果你的页面是用UTF-8编码的,你可以回复它,可能会调用htmlspecialchars,第三个参数设置为“UTF-8”。
  • 否则,您必须先将其转换为您的网页使用的编码。请参阅iconvmb_convert_encoding