【发布时间】:2015-03-08 15:08:40
【问题描述】:
我正在尝试解析一个特定的 html 文档,某种字典,大约有 10000 个单词和描述。 一切都很顺利,直到我注意到特定格式的条目没有得到很好的解析。
这是一个例子:
<?php
$html = '
<p>
<b>
<span>zot; zotz </span>
</b>
<span>Nista; nula. Isto
<b>zilch; zip.</b>
</span>
</p>
';
$xml = simplexml_load_string($html);
var_dump($xml);
?>
var_dump() 的结果是:
object(SimpleXMLElement)#1 (2) {
["b"]=>
object(SimpleXMLElement)#2 (1) {
["span"]=>
string(10) "zot; zotz "
}
["span"]=>
string(39) "Nista; nula. Isto
"
}
如您所见 - Simplexml 将文本节点保留在标记内,但省略了子节点和文本。
我也试过了:
$doc = new DOMDocument();
$doc->loadHTML($html);
$xml = simplexml_import_dom($doc);
结果相同。
在我看来,这是解析 html 时的常见问题,我尝试用谷歌搜索它,但唯一承认这个问题的地方是这个博客: https://hakre.wordpress.com/2013/07/09/simplexml-and-json-encode-in-php-part-i/ 但不提供任何解决方案。
关于在 SO 中解析 HTML 的帖子和答案过于笼统。
有没有简单的方法来解决这个问题? 或者,我应该改变我的策略吗?
【问题讨论】:
标签: php xml parsing html-parsing simplexml