ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用して、特定の要素クラスに基づいて HTML ドキュメントからテキスト データを抽出して分類するにはどうすればよいですか?

PHP を使用して、特定の要素クラスに基づいて HTML ドキュメントからテキスト データを抽出して分類するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-12 15:48:01619ブラウズ

How can I extract and categorize text data from an HTML document based on specific element classes using PHP?

指定されたクラスを持つ要素から包括的な配列としてテキストを取得する

このクエリでの当面のタスクは、テキスト データを抽出して分類することです。特定の要素クラスに基づいた HTML ドキュメントから。 HTML ドキュメントには、「Heading1-P」や「Normal-P」などのクラスを持つさまざまな段落が含まれており、それぞれに対応する見出しとコンテンツが含まれています。

これを実現するには、PHP DOM Document と XPath を利用できます。このプロセスには、HTML ドキュメントの解析と、XPath を使用したその要素の走査が含まれます。 XPath オブジェクトとクラス名を入力として受け取るカスタム関数 parseToArray() を定義します。この関数は、クラスに一致する要素を反復処理し、そのテキスト コンテンツを配列に抽出します。

詳細な解決策は次のとおりです。

$test = <<< 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>
<p class="Heading1-P">
    <span class="Heading1-H">Chapter 2</span>
</p>
<p class="Normal-P">
    <span class="Normal-H">This is chapter 2</span>
</p>
<p class="Heading1-P">
    <span class="Heading1-H">Chapter 3</span>
</p>
<p class="Normal-P">
    <span class="Normal-H">This is chapter 3</span>
</p>
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 "<br/>";
var_dump($content);
echo "<br/>";

function parseToArray(DOMXPath $xpath, string $class): array
{
    $xpathquery = "//[@class='$class']";
    $elements = $xpath->query($xpathquery);

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

    return $resultarray;
}

関数 parseToArray() は、特定のクラスに基づいて要素を識別します。名前を付け、そのテキスト内容を配列に抽出します。続いて、$Heading と $content という 2 つの配列が作成され、それぞれ章のタイトルと対応する段落テキストが含まれます。コードの出力は次のようになります。

array(3) {
  [0] =>
  string(8) "Chapter 1"
  [1] =>
  string(8) "Chapter 2"
  [2] =>
  string(8) "Chapter 3"
}
array(3) {
  [0] =>
  string(16) "This is chapter 1"
  [1] =>
  string(16) "This is chapter 2"
  [2] =>
  string(16) "This is chapter 3"
}

このアプローチを採用すると、HTML ドキュメントから特定のクラス名に基づいてテキスト コンテンツを効率的に取得して分離できるため、柔軟で的を絞ったデータ処理が可能になります。

以上がPHP を使用して、特定の要素クラスに基づいて HTML ドキュメントからテキスト データを抽出して分類するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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