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

PHPのDOM操作について質問です。
以下のようなDOM操作の流れで、aタグの中身(hoge_textやfoo_text)を<span></span>タグで囲うためにはどうすれば良いでしょうか?

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

$sour =<<< EOT
<a href="hoge">hoge_text</a><a href="foo">foo_text</a><a href="bar">bar_text</a>
EOT;

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

$doc = new DOMDocument();
$doc->loadXML($sour);
echo $doc->saveXML($doc);
?>

●実行結果のイメージ(aタグの内側にspanを付けたい)
<a href="hoge"><span>hoge_text</span></a><a href="foo"><span>foo_text</span></a><a href="bar"><span>bar_text</span></a>

●質問者: P-mako
●カテゴリ:インターネット ウェブ制作
✍キーワード:DOC DOM echo PHP SOUR
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tdoi
●60ポイント ベストアンサー

正確にやりたいことが分かりませんが、aタグ直下のテキストノードをspanで囲むだけなら次みたいな感じでしょうか。

そのままですが。

$anchors = $doc->getElementsByTagName("a");
for ($i = 0; $i < $anchors->length; ++$i) {
 $anchor = $anchors->item($i);

 $children = $anchor->childNodes;
 for ($j = 0; $j < $children->length; ++$j) {
 $child = $children->item($j);
 if ($child->nodeType == XML_TEXT_NODE) {
 $element = $doc->createElement('span', $child->nodeValue);
 $anchor->replaceChild($element, $child);
}
 }
}

echo $doc->saveXML($doc);

慣れたら、マニュアル見ながらいろいろ試せるといいですね。

http://php.mirror.camelnetwork.com/manual/ja/book.dom.php

◎質問者からの返答

ありがとうございます。できました。

関連質問


●質問をもっと探す●



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