문제:
제목과 제목이 모두 포함된 요소가 있는 HTML 콘텐츠를 보유하고 있습니다. 일반 텍스트. 목표는 지정된 클래스(제목의 경우 "Heading1-H", 텍스트의 경우 "Normal-H")가 있는 요소에서 $heading 및 $content라는 두 개의 개별 배열로 텍스트를 추출하는 것입니다.
해결책:
PHP DOM 사용 및 XPath
PHP DOM(문서 개체 모델) 및 XPath(XML 경로 언어)는 이 작업을 위한 강력한 솔루션을 제공합니다. 구현은 다음과 같습니다.
$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 중국어 웹사이트의 기타 관련 기사를 참조하세요!