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

Patricia Arquette
リリース: 2024-11-21 12:01:10
オリジナル
917 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート