我有以下问题。我想读取一个外部HTML文件。我只需要body
标记之间的HTML元素。为此,我在PHP代码下面创建了它,并且可以正常工作。现在,我需要添加其他功能,在遍历时,我需要检查HTML元素是否有data-id
,如果是,则必须向该节点添加一个值。值保存在PHP数组中,并且键与data-id
相同。任何提示我该怎么做?我认为它需要进入foreach($children
as $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);
}
最佳答案
我首先要使用xpath查询在body
中具有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();
关于javascript - 如何使用PHP遍历Dom并找到data-id,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48361482/