我正在尝试使用nodeValue获取文件中div标签的innerhtml,但是此代码仅输出纯文本,并且似乎从div内部删除了所有html标签。我如何更改此代码以输出 div 的 HTML 内容而不是纯文本,并且还输出包装其子元素的主 div。
例子:
file.txt的内容:
<div class="1"><span class="test">text text text</span></div>
<div class="2"><span class="test">text text text</span></div>
<div class="3"><span class="test">text text text</span></div>
脚本.php:
$file= file_get_contents('file.txt');
$doc = new DOMDocument();
@$doc->loadHTML('<?xml encoding="UTF-8">'.$file);
$entries = $doc->getElementsByTagName('div');
for ($i=0;$i<$entries->length;$i++) {
$entry = $entries->item($i);
echo $entry->nodeValue;
}
输出: 文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本
我需要它输出什么:
<div class="1"><span class="test">text text text</span></div>
<div class="2"><span class="test">text text text</span></div>
<div class="3"><span class="test">text text text</span></div>
请注意,还需要输出父 div (..etc) 以及包装 span 标签...
HELP!
我从来没有做过你想要做的事情,但是作为在黑暗中进行的尝试,使用 API 文档,确实 echo $entry->textContent;工作?
添加更新。这是来自文档页面上的评论DOMNode http://php.net/manual/en/class.domelement.php:
Hi!
结合所有注释,获取节点内部 HTML 的最简单方法是使用此函数:
<?php function get_inner_html( $node ) {
$innerHTML= '';
$children = $node->childNodes;
foreach ($children as $child) {
$innerHTML .= $child->ownerDocument->saveXML( $child );
}
return $innerHTML; } ?>
或者,也许一个更简单的方法就是这样做:
echo $domDocument->saveXML($entry);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)