ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して、異なるクラスを持つ特定の HTML 要素からテキストを個別の配列に抽出するにはどうすればよいですか?

PHP を使用して、異なるクラスを持つ特定の HTML 要素からテキストを個別の配列に抽出するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-21 12:01:10918ブラウズ

How can I extract text from specific HTML elements with different classes into separate arrays using PHP?

特定の HTML 要素から配列にテキストを抽出する

問題:

見出しと見出しの両方を含む要素を含む HTML コンテンツを所有しています。通常のテキスト。目標は、指定されたクラス (見出しの場合は「Heading1-H」、テキストの場合は「Normal-H」) を持つ要素からテキストを 2 つの別々の配列、$Heading と $content に抽出することです。

解決策:

PHP DOM を使用し、 XPath

PHP DOM (Document Object Model) と XPath (XML Path Language) は、このタスクに対する堅牢なソリューションを提供します。実装は次のとおりです:

$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;
}

出力:

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

以上がPHP を使用して、異なるクラスを持つ特定の HTML 要素からテキストを個別の配列に抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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