3
HTMLファイルのDOM(私はテキスト要素にのみ関心があります)に移動しようとするたびに、ノードのtextContentプロパティをポイントするとエコーしますその特定のノードツリーにあるすべてのテキスト。たとえば :HTML DOM:PHPでtextContentプロパティを正しく使用する方法
以下になり<html lang="en">
<body>
<p> 1st text I need</p>
<a href="#">2nd text I need</a>
<table>
<tr>
<td>3rd text I need</td>
</tr>
</table>
</body>
</html>
:
#document
html
html 1st text I need 2nd text I need 3rd text I need
body 1st text I need 2nd text I need 3rd text I need
p 1st text I need
a 2nd text I need
table 3rd text I need
tr 3rd text I need
td 3rd text I need
私だけ直接テキストコンテンツを持つ要素からテキストを抽出したいと思います。上記の例では、p,およびddとなります。
どうすればいいですか?
はこちら(hereから抽出された)コードです:
<?php
$doc = new DOMDocument();
@$doc->loadHTMLFile('test.html');
walkDom($doc);
function walkDom($node, $level = 0)
{
$indent = '';
for ($i = 0; $i < $level; $i++)
$indent .= ' '; //prettifying the output
if($node->nodeType != XML_TEXT_NODE) {
echo $indent .'<b>' . $node->nodeName .'</b>';
if($node->nodeType == XML_ELEMENT_NODE) {
echo $node->textContent;
}
echo '<br>';
}
$cNodes = $node->childNodes;
if (count($cNodes) > 0)
{
$level++; // go one level deeper
foreach($cNodes as $cNode)
walkDom($cNode, $level);
$level = $level - 1;
}
}
ありがとうございます。これらのテキスト要素を変更することは可能ですか(これは私の最終目標であり、言及するのを忘れました)? –
それは完全に別個の質問でしょう。 – miken32
フェアポイント。別の質問を提出します。ご回答有難うございます。 –