人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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つのタグに複数のクラス名が付けられていた場合に、該当タグにヒットするなら除去対象です。

●質問者: P-mako
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Class DOM hoge HTML PHP
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● pahoo
●60ポイント

DOMを誤解されているようです。


DOMは、構造化されたテキストを扱うためのAPIです。実際には、HTML や XML を扱うための API として標準化が進められています。


一方、ご質問の例と出されている文字列は、HTML でも XML でもありません。一番外側に、ルートのタグがないので、構造化テキストとなっていません。

このような構造化されていないテキストを DOM で扱うことはできません。


構造化されていないテキストを扱うには、正規表現を適用する方が合理的です。


参考サイト

◎質問者からの返答

ご指摘ありがとうございます。

「もしかしたら・・・」と思っていた点ではあったのですが、正しい理解を得ることができました。ありがとうございます。

では、少し質問を補強させていただきますと、

tempDom = document.createElement("div");

のようにルートとなるDOMを作成し、その中に上記のような文字列を入れてから処理するような場合、どうなりますでしょうか?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ