
PHPのDOM操作について質問です。
つぎのような文字列(HTMLソースですが例のようにいきなりテキストから始まる場合もあります)をDOMオブジェクトとして扱い、特定class名の<img>タグを除去して、再度文字列に戻すような処理はどのように書けば良いでしょうか?
【例】クラス名"hoge"の<img>タグだけを除去したい
<入力>
texttexttexttexttext<img src="aaa.png" class="hoge" /><img src="bbb.png" class="foo" />texttexttexttexttext
<出力>
texttexttexttexttext<img src="bbb.png" class="foo" />texttexttexttexttext
簡単にするために<img>タグにしましたが、実際には<div class="hoge">texttexttext</div>の場合は、中のtexttexttextも合わせて除去したいです。
正規表現でも対応可能だとは思いますが、応用を考えてDOM操作で実現したいです。
また、クラス名なので、1つのタグに複数のクラス名が付けられていた場合に、該当タグにヒットするなら除去対象です。
DOMを誤解されているようです。
DOMは、構造化されたテキストを扱うためのAPIです。実際には、HTML や XML を扱うための API として標準化が進められています。
一方、ご質問の例と出されている文字列は、HTML でも XML でもありません。一番外側に、ルートのタグがないので、構造化テキストとなっていません。
このような構造化されていないテキストを DOM で扱うことはできません。
構造化されていないテキストを扱うには、正規表現を適用する方が合理的です。
参考サイト
ご指摘ありがとうございます。
「もしかしたら・・・」と思っていた点ではあったのですが、正しい理解を得ることができました。ありがとうございます。
では、少し質問を補強させていただきますと、
tempDom = document.createElement("div");
のようにルートとなるDOMを作成し、その中に上記のような文字列を入れてから処理するような場合、どうなりますでしょうか?