【发布时间】:2014-06-09 17:57:30
【问题描述】:
假设我有一个包含许多不同元素的 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 循环中动态进行修改呢?我真的不想为此使用正则表达式。
【问题讨论】:
-
您想在每个元素中添加/反转
class="potato"?... -
请注意
hasClass在 PHP 的 DOMNode 接口中不可用,因此您可能希望使用允许 CSS 选择器的东西,例如 Simple HTML DOM
标签: php parsing html-parsing domdocument