PHPのDOM操作について質問です。

以下のようなテキストをDOMオブジェクト化する方法はありませんか?

texttexttexttexttext<img src="aaa.png" class="hoge" /><img src="bbb.png" class="foo" />texttexttexttexttext

DOMDocument->createTextNode()
でオブジェクト化すると(当然なんでしょうが)、「<」や「>」がコード化(&gt; や &lt;)されてしまいます。

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:2009/05/14 17:30:29
  • 終了:2009/05/15 13:23:28

ベストアンサー

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/05/14 18:06:13

ポイント60pt

PHPのDOM操作について質問です」で回答しましたが、DOM に投入するテキストは構造化されていなければなりません。createTextNode や createElement の引数は構造化されていないテキストなので、タグ文字がエスケープされてしまうのです。


PHP5 で読み込める構造化テキストは HTML, XML の2種類なので、汎用性のある XML にしてから読み込むようにしてみました。(勝手に div タグを付加しています)

(PHP4だと DOM の動きが少し違うので気をつけてください)

<?php
mb_internal_encoding('UTF-8');

$sour =<<< EOT
texttexttexttexttext<img src="aaa.png" class="hoge" /><img src="bbb.png" class="foo" />texttexttexttexttext
EOT;

//XMLにする
$sour = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<div>" . $sour . "</div>";

$doc = new DOMDocument();
$doc->loadXML($sour);
echo $doc->saveXML($doc);
?>
id:P-mako

ありがとうございます!

意図した処理を実現できました。すごく助かりました。

2009/05/15 13:23:14

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません