>백엔드 개발 >PHP 튜토리얼 >PHP를 사용하여 특정 요소 클래스를 기반으로 HTML 문서에서 텍스트 데이터를 추출하고 분류하려면 어떻게 해야 합니까?

PHP를 사용하여 특정 요소 클래스를 기반으로 HTML 문서에서 텍스트 데이터를 추출하고 분류하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-12 15:48:01650검색

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 문서와 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라는 두 개의 배열이 생성됩니다. 코드의 출력은 다음과 같습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.