duaiwu8385 2010-06-28 16:04
浏览 77
已采纳

PHP DomDocument,DomXPath编码问题

I'm having a problem with encoding from a wordpress feed that I just can't seem to figure out.

I was loading my feed with DOMDocument->load but then did a file_get_contents and am now using ->XMLload with the same results. I did the XMLload so I could manipulate the feed if needed.

The correct output that I'm looking for is - ‘ £. If I just echo from a Xpath query, I get - ‘ £. If I echo with utf8_decode I get - ? £. A lot better but the question mark should be an apostrophe.

If I loop through each node of the DomDocument when it is loaded, I get the correct output. So it seems that it's being handled incorrectly in XPath.

Any thought?

The feed is http://shredeasy.com/blog/category/news/feed

Here is the function that is being called:

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"]);

I have been trying to figure this out for hours and I keep circling back to the wrong thing.

Thanks for the help!

You know right, it seems to be that apostrophes are turning into question marks....Gosh! I don't know if that's the only issue or not.

  • 写回答

1条回答 默认 最新

  • doumisha5081 2010-06-28 16:51
    关注

    The string being echoed is encoded in UTF-8.

    • If your page was encoded in UTF-8, you can just echo it, possibly calling htmlspecialchars with the third argument set to "UTF-8".
    • Otherwise, you have to convert it before to whatever encoding your webpage is using. See iconv and mb_convert_encoding.
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)