티스토리 뷰

배움/PHP

PHP HTML parser 방법

spaces25 2025. 4. 17. 11:57
반응형

✅ 1. DOMDocument 클래스 (내장 라이브러리)

PHP에 기본 내장된 클래스로, HTML을 로드하고 요소를 탐색할 수 있습니다.

예시:

<?php
$html = <<<HTML
<html>
  <body>
    <div class="item">Item 1</div>
    <div class="item">Item 2</div>
  </body>
</html>
HTML;

$doc = new DOMDocument();
libxml_use_internal_errors(true); // HTML 파싱 중 경고 무시
$doc->loadHTML($html);
libxml_clear_errors();

$xpath = new DOMXPath($doc);
$items = $xpath->query('//div[@class="item"]');

foreach ($items as $item) {
    echo $item->nodeValue . "\n";
}
?>

출력:

Item 1
Item 2

✅ 2. Simple HTML DOM Parser (외부 라이브러리)

더 직관적인 문법을 제공하며, HTML을 CSS 선택자처럼 쉽게 다룰 수 있습니다.

설치 (composer 사용):

composer require simplehtmldom/simplehtmldom

사용 예시:

<?php
require 'vendor/autoload.php';

use Sunra\PhpSimple\HtmlDomParser;

$html = <<<HTML
<html><body><div class="item">Item 1</div><div class="item">Item 2</div></body></html>
HTML;

$dom = HtmlDomParser::str_get_html($html);

foreach ($dom->find('.item') as $element) {
    echo $element->plaintext . "\n";
}
?>

✅ 3. Symfony DomCrawler

조금 더 무겁지만 테스트와 크롤링에 강력한 기능을 제공하는 컴포넌트입니다.

설치:

composer require symfony/dom-crawler
composer require symfony/css-selector

사용 예시:

<?php
require 'vendor/autoload.php';

use Symfony\Component\DomCrawler\Crawler;

$html = '<html><body><div class="item">Item 1</div><div class="item">Item 2</div></body></html>';
$crawler = new Crawler($html);

$crawler->filter('.item')->each(function (Crawler $node) {
    echo $node->text() . "\n";
});
?>

🔍 언제 어떤 걸 써야 할까?


상황 추천
기본 기능으로 충분할 때 DOMDocument
빠르게 개발하고 싶을 때 Simple HTML DOM Parser
크롤링이나 테스트 자동화 시 Symfony DomCrawler
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함