ホームページ  >  記事  >  バックエンド開発  >  PHP DOM を使用して、特定のクラスを持つ HTML 要素からフラット配列にテキストを抽出する方法

PHP DOM を使用して、特定のクラスを持つ HTML 要素からフラット配列にテキストを抽出する方法

DDD
DDDオリジナル
2024-11-15 17:18:03879ブラウズ

How to Extract Text from HTML Elements with Specific Classes into Flat Arrays using PHP DOM?

PHP DOM を使用した指定クラスの要素からのフラット テキストの抽出

特定の HTML 要素からのテキストの抽出は、Web 開発における一般的なタスクです。 PHP DOM は、HTML を解析してそのコンテンツにアクセスするための強力なツールを提供します。この記事では、指定されたクラスを持つ要素からテキストを 2 つのフラット配列に抽出するという特定の要件について説明します。

問題

指定された HTML コンテンツに、複数の p 要素間に分散されたテキストが含まれています。クラス名を交互に使用する場合、タスクはテキストを 2 つの配列 (見出し用とコンテンツ用) に保存することです。たとえば、次の HTML があるとします:

<p class="Heading1-P">
    <span class="Heading1-H">Chapter 1</span>
</p>
<p class="Normal-P">
    <span class="Normal-H">This is chapter 1</span>
</p>

次の出力を取得する必要があります:

$heading = ['Chapter 1', 'Chapter 2', 'Chapter 3'];
$content = ['This is chapter 1', 'This is chapter 2', 'This is chapter 3'];

ソリューション

これを達成するにはPHP DOM を使用して抽出するには、DOMDocument と DOMXPath を使用します。この解決策には次の手順が含まれます:

  1. HTML を DOMDocument オブジェクトにロードします:
$dom = new DOMDocument();
$dom->loadHTML($test);
  1. XPath を実行する DOMXPath オブジェクトを作成します:
$xpath = new DOMXPath($dom);
  1. を使用する指定されたクラスの要素からテキストを抽出する parseToArray() 関数:
$heading = parseToArray($xpath, 'Heading1-H');
$content = parseToArray($xpath, 'Normal-H');

parseToArray() 関数内:

  • 指定されたクラスの XPath クエリを実行します。 .
  • 一致したノードを反復処理し、そのテキストを抽出しますcontent.
  • 抽出されたテキストを配列に格納し、返されます。

完全な PHP コードは次のとおりです。

query($xpathquery);

    $resultarray = [];
    foreach ($elements as $element) {
        $nodes = $element->childNodes;
        foreach ($nodes as $node) {
            $resultarray[] = $node->nodeValue;
        }
    }

    return $resultarray;
}

$test = <<
    Chapter 2

This is chapter 2

Chapter 3

This is chapter 3

HTML; $dom = new DOMDocument(); $dom->loadHTML($test); $xpath = new DOMXPath($dom); $heading = parseToArray($xpath, 'Heading1-H'); $content = parseToArray($xpath, 'Normal-H'); var_dump($heading); echo "
"; var_dump($content); echo "
";

このアプローチでは、次の機能を利用します。 PHP DOM および XPath により、HTML ドキュメントからテキストを効率的に抽出し、より複雑で的を絞ったコンテンツ操作が可能になります。

以上がPHP DOM を使用して、特定のクラスを持つ HTML 要素からフラット配列にテキストを抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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