用PHP循环遍历Dom并找到data-id

时间:2018-01-20 21:54:19

标签: javascript php html

我有以下问题。我想阅读外部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); 
} 

1 个答案:

答案 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();