Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

PHP의 DOMDocument와 DOMXPath로 HTML 구문 분석하기

PHP에서 HTML 문서를 구문 분석(파싱)해야 할 때는 표준 라이브러리에 포함된 DOMDocument 클래스와 DOMXPath 클래스를 활용하는 것이 가장 안정적입니다. 정규표현식으로 HTML을 직접 처리하는 방식보다 구조화된 방법으로 요소에 접근할 수 있어 오류 발생 가능성이 크게 줄어듭니다.


예를 들어, class="main" 속성을 가진 <div> 태그 내부에 위치한 class="text" 속성의 <div> 태그 텍스트는 다음과 같은 코드로 손쉽게 추출할 수 있습니다.


예제 코드

$html = <<
    
This is text 1
This is text 2
HTML; $dom = new DOMDocument(); $dom->loadHTML($html); $xpath = new DOMXPath($dom); $tags = $xpath->query('//div[@class="main"]/div[@class="text"]'); foreach ($tags as $tag) { var_dump(trim($tag->nodeValue)); }

코드 설명

1. loadHTML() : HTML 문자열을 DOMDocument 객체로 불러와 파싱합니다.
2. DOMXPath : 생성된 DOM 문서를 대상으로 XPath 쿼리를 실행할 수 있도록 지원합니다.
3. query() 메서드 : '//div[@class="main"]/div[@class="text"]'라는 XPath 표현식과 일치하는 모든 요소를 DOMNodeList 형태로 반환합니다.
4. nodeValue : 해당 노드가 담고 있는 텍스트 값을 의미하며, trim() 함수로 앞뒤 공백을 제거한 뒤 var_dump()로 출력합니다.


실행 결과

string 'This is text 1' (length=14)
string 'This is text 2' (length=14)

이처럼 XPath 쿼리와 DOMXPath::query 메서드를 조합하면 원하는 요소 목록을 간단하게 조회할 수 있습니다. 선택 조건이 복잡해지더라도 XPath 표현식만 수정하면 되므로 코드의 가독성과 유지보수성 측면에서도 큰 장점을 가집니다.