それぞれが異なる属性を持つ多くの異なる要素を持つHTMLファイルがあるとしましょう。このHTMLがどのように表示されるかを事前に知らないとしましょう。
PHPのDOMDocumentを使用して、[〜#〜] all [〜#〜]要素を反復処理して変更するにはどうすればよいですか?表示されるのはgetElementByTagNameやgetElementByIdなどだけです。すべての要素を反復処理したいと思います。
例えば。 HTMLが次のようになっているとしましょう(単なる例ですが、実際には構造がわかりません)。
$html = '<div class="potato"><span></span></div>';
(Javascriptのように)いくつかの簡単なDOM変更を行えるようにしたい:
$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 ){
}
_
手動 から:
名前
一致するタグのローカル名(名前空間なし)。特別な値*はすべてのタグに一致します。