我有以下问题。我想读取一个外部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/

10-12 18:09
查看更多