我有以下问题。我想阅读外部HTML文件。我只需要body
标记之间的HTML元素。为此,我创建了以下PHP代码,它的工作原理。我现在需要添加一个功能,当我循环时,我需要检查HTML元素是否有data-id
,如果是,那么我必须为该节点添加一个值。 Value保存在PHP数组中,Key与data-id
相同。有什么提示我怎么能这样做?我认为它需要进入foreach($children
作为$child
)循环,是吗?如果是这样,我该如何检查数据ID?任何提示都将受到高度赞赏。
$doc = new DOMDocument();
$doc->loadHTMLFile("extracontent.html");
function DOMinnerHTML(DOMNode $element,$attr)
{
$innerHTML = "";
$children = $element->childNodes;
foreach ($children as $child)
{
$innerHTML .= $element->ownerDocument->saveHTML($child);
}
return $innerHTML;
}
$oldDom = $doc->getElementsByTagName("body");
foreach ($oldDom as $element)
{
$newDom = DOMinnerHTML($element);
}
答案 0 :(得分:1)
我首先要查找body
中所有使用xpath查询具有data-id
属性的子节点,然后附加到它们或构建数组:
$dom = new DOMDocument();
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$dox = new DOMXPath($dom);
$nodes = $dox->query('/html/body//*[@data-id]');
$array = [];
foreach ($nodes as $key => $node) {
$node->appendChild(new DOMText('add text'));
$array[$key] = ['data-id' => 'add text'];
}
echo $dom->saveHTML();