ホームページ >バックエンド開発 >PHPチュートリアル >PHP の DOMDocument と XPath を使用して特定の HTML 要素からテキストを効率的に抽出する方法

PHP の DOMDocument と XPath を使用して特定の HTML 要素からテキストを効率的に抽出する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-02 08:48:29516ブラウズ

How to Efficiently Extract Text from Specific HTML Elements Using PHP's DOMDocument and XPath?

PHP の HTML DOMDocument を使用した HTML の解析

質問:

DOMDocument オブジェクトを使用して、キャプチャします特定の HTML 要素内のテキスト。たとえば、次の HTML から「Capture this text 1」と「Capture this text 2」を抽出します:

<div class="main">
    <div class="text">
    Capture this text 1
    </div>
</div>

<div class="main">
    <div class="text">
    Capture this text 2
    </div>
</div>

Answer:

Using DOMDocument::getElementsByTagName特定の名前を持つすべてのタグを取得することは、このタスクにとって非効率的であることが判明する可能性があります。代わりに、DOMXPath クラスを利用して、ドキュメントに対して XPath クエリを採用することを検討してください。

実装:

  1. DOMDocument への HTML の読み込みオブジェクト:

    <code class="php">$html = <<<HTML
    <div class="main">
     <div class="text">
     Capture this text 1
     </div>
    </div>
    
    <div class="main">
     <div class="text">
     Capture this text 2
     </div>
    </div>
    HTML;
    
    $dom = new DOMDocument();
    $dom->loadHTML($html);</code>
  2. DOMXPath のインスタンス化 オブジェクト:

    <code class="php">$xpath = new DOMXPath($dom);</code>
  3. XPath の実行クエリ:

    <code class="php">$tags = $xpath->query('//div[@class="main"]/div[@class="text"]');</code>
  4. テキスト値の取得:

    <code class="php">foreach ($tags as $tag) {
     var_dump(trim($tag->nodeValue));
    }</code>

このアプローチでは、「提供された HTML から「このテキストをキャプチャ 1」と「このテキストをキャプチャ 2」を実行します。

以上がPHP の DOMDocument と XPath を使用して特定の HTML 要素からテキストを効率的に抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。