PHP DomElement-> nodeValue有gobbledygook

时间:2010-11-17 04:48:42

标签: php xml dom

我正在使用PHP的DOMElement控件解析第三方网页。当我在浏览器中使用网页并查看源代码时,它很干净,但是当我通过DOMElement-> nodeValue参数访问某些节点时,HTML标记不存在,并且有几个换行符和此字符Â 。根据{{​​3}},这是出现编码问题时出现的字符。

我也可以使用:

获得那个gobbly-gook
  • simplexml_import_dom($节点) - > asXML();
  • $ doc-> saveXML($节点);

我的问题是如何在DOMElement中简单地获取干净的HTML代码?

以下是干净的HTML代码:

<b>Author:</b> AUTHOR<br>
            <b>ISBN:</b> 9780684857220 <br>
            <b>Edition/Copyright:</b> 7<br>
            <b>Publisher:</b> J+M<br>
            <b>Published Date:</b>  1989<br>

这是nodeValue给出的内容:

                    Â 
                    Author:Â AUTHOR      ISBN:Â 9780684857220 Edition/Copyright:Â 7     Publisher:Â J+M       Published Date:Â 
                    1989

2 个答案:

答案 0 :(得分:2)

您是否尝试在创建DOM文档时指定编码?例如:

$doc = new DOMDocument('1.0', 'utf-8');
$doc->loadXML($third_party_web_page_string);

$doc = new DOMDocument('1.0', 'iso-8859-1');
$doc->loadXML($third_party_web_page_string);

如果这些都不起作用,您可以在将数据加载到DOM对象之前尝试对数据使用iconv函数。

答案 1 :(得分:2)

原来这不是编码问题,而是我使用了错误的方法。这有效:

$doc = new DOMDocument();
$doc->appendChild($doc->importNode($second_td,true)); 
echo $doc->saveHTML();