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 を使用します。この解決策には次の手順が含まれます:
$dom = new DOMDocument(); $dom->loadHTML($test);
$xpath = new DOMXPath($dom);
$heading = parseToArray($xpath, 'Heading1-H'); $content = parseToArray($xpath, 'Normal-H');
parseToArray() 関数内:
完全な PHP コードは次のとおりです。
query($xpathquery); $resultarray = []; foreach ($elements as $element) { $nodes = $element->childNodes; foreach ($nodes as $node) { $resultarray[] = $node->nodeValue; } } return $resultarray; } $test = << Chapter 2This 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 サイトの他の関連記事を参照してください。