目前情况描述:
我有一个装满页面的文件夹(页面文件夹),该文件夹内的每个页面(除其他外)都有一个 div ,id="short-info"
.
我有一个代码可以提取所有<div id="short-info">...</div>
从该文件夹中并使用显示其中的文本textContent
(为此目的,与nodeValue
)
加载div的代码:
<?php
$filename = glob("pages-folder/*.php");
sort($filename);
foreach ($filename as $filenamein) {
$doc = new DOMDocument();
$doc->loadHTMLFile($filenamein);
$xpath = new DOMXpath($doc);
$elements = $xpath->query("*//div[@id='short-info']");
foreach ($elements as $element) {
$nodes = $element->childNodes;
foreach ($nodes as $node) {
echo $node->textContent;
}
}
}
?>
现在的问题是,如果我正在加载的页面有一个子页面,例如图像:<div id="short-info"> <img src="picture.jpg"> Hello world </div>
,输出将仅为 Hello world 而不是图像,然后是 Hello world。
问题:
如何使代码显示 div id="short-info" 内的完整 html,包括例如图像而不仅仅是文本?
您必须在节点上进行未记录的调用。
$node->c14n()
将为您提供包含在中的 HTML$node
.
疯狂吧?我为此掉了一些头发。
http://php.net/manual/en/class.domnode.php#88441 http://php.net/manual/en/class.domnode.php#88441
Update
这将修改 html 以符合严格的 HTML。最好使用
$html = $Node->ownerDocument->saveHTML( $Node );
Instead.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)