gpt4 book ai didi

php - 使用 DOMDocument,是否可以获取某个 DOM 中存在的所有元素?

转载 作者:IT王子 更新时间:2023-10-29 00:16:51 26 4
gpt4 key购买 nike

假设我有一个包含许多不同元素的 HTML 文件,每个元素都有不同的属性。假设我事先不知道这个 HTML 会是什么样子。

使用 PHP 的 DOMDocument,我如何遍历 ALL 元素并修改它们?我只看到 getElementByTagName 和 getElementById 等。我想遍历所有元素。

例如。假设 HTML 看起来像这样(只是一个例子,实际上我不知道结构):

$html = '<div class="potato"><span></span></div>';

我希望能够进行一些简单的 DOM 修改(比如在 Javascript 中):

$dom = new DOMDocument();
$dom->loadHTML($html);

// Obviously the code below doesn't work but showcases what I want to achieve
foreach($dom->getAllElements as $element ){
if(!$element->hasClass('potato')){
$element->addClass('potato');
} else{
$element->removeClass('potato');
}
}
$html = $dom->SaveHTML();

所以在这种情况下,我希望生成的 html 看起来像这样:

    $html = '<div><span class="potato"></span></div>';

那么我如何遍历所有元素并在 foreach 循环中即时进行修改?我真的不想为此使用正则表达式。

最佳答案

您可以使用 getElementsByTagName() 传递一个星号 *返回所有元素:

foreach($dom->getElementsByTagName('*') as $element ){

}

来自 Manual :

name
The local name (without namespace) of the tag to match on. The special value * matches all tags.

关于php - 使用 DOMDocument,是否可以获取某个 DOM 中存在的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23269067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com