duanfeigui6655 2018-01-20 21:54
浏览 83
已采纳

如何使用PHP循环访问Dom并查找data-id

I have the following issue. I want to read in an external HTML file. I only need the HTML Elements between the body Tag. For that I have created below PHP Code and it works. I now need to add one more functionality, when I loop through I need to check if the HTML Element got a data-id and if so, then I have to add a value to that node. The Value is saved in a PHP Array and the Key is the same as the data-id. Any hint how I could do that? I would think that it needs to go into the foreach ($children as $child) loop, is that right? And if so, how can I check for the data-id? Any hint would be highly appreciated.

 $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条回答 默认 最新

  • dtm37893 2018-01-20 22:41
    关注

    I'd go with first looking for all child nodes within body which have data-id attribute using xpath queries then appending to them or building an array:

    $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();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?