0

PHP を使用してさまざまな Web ページを取得し、それらを DomDocument にロードしていますが、リーフ ノードからのみテキストを抽出する際に問題が発生しています。

たとえば、次のものがあるとします。

<html>
    <body>
        <div class="this_is_our_div_of_interest">
            <div>
                <div>
                    <p>Some text</p>
                    <div>Some <a href='#'>more</a> text</div>
                    <p>And <span><strong>another</strong></span> paragraph</p>
                </div>
                <p>Yay<p>
            </div>
            <div>
                <h4>abcd</ph4>
                xyz
            <div>
        </div>
        <div class="we_do_not_want_those_divs">
            <p>This text is not important to us</p>
        </div>
    </body>
</html>

ご覧のとおり、これは乱雑な入力ですが、予想される「エコーされた」出力は次のとおりです。

Some text
Some more text
And another paragraph
Yay
abcd
xyz

出力で次の点に注意してください

  1. 特定のタグからのみ出力を取得します (この例ではthis_is_our_div_of_interest)
  2. これは、上記のツリーに固有の形式ではありません。これは、Web ページ tjat から取得されたものであるため、コンテンツを制御できませんが、リーフ ノードのように見えるdivpなどのタグのコンテンツのみを表示したい
  3. aspanstrongなど、省略が必要なタグがいくつかあります(その他のタグはリストに追加される可能性があります)。

更新 クラスにアクセスするために xpath を使用しています。たとえば、次のコード行は、すべての子孫を個別のノードとして表示します。

$nodes = $xpath->query("//div[@class='this_is_our_div_of_interest']/descendant::*");
4

1 に答える 1