PHP - DOM 파서 예제
안녕하세요, 젊은 코딩 열정가 여러분! 오늘 우리는 PHP와 DOM 파싱의 세계로 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 선생님이자 저는 이 모험을 단계별로 안내해드리겠습니다. 그러니 가상의 안전帽을 쓰고, 함께 들어가 보겠습니다!
DOM 파싱이란?
코딩으로 뛰어들기 전에, DOM 파싱이 무엇인지 이해해 보겠습니다. 책을 읽고 있는 상상해 봅시다. DOM(문서 객체 모델)은 그 책의 구조와 같습니다 - 장,段落, 문장. DOM 파싱은 페이지를 넘기고 모든 것이 어떻게 조직되어 있는지 이해하는 것과 같습니다. 웹 세계에서는 HTML 문서를 탐색하고 조작하는 데 도움을 줍니다.
오늘의 임무
우리는 PHP 스크립트를 작성하여 HTML 파일을 읽고, 특정 정보를 추출하여 표시하는 작업을 수행하겠습니다. 범죄를 풀고 있는 탐정처럼, 웹 페이지의 미스터리를 풀어나가는 것입니다!
예제
먼저 우리의 HTML 파일을 작성해 보겠습니다. 파일 이름은 example.html
이 될 거예요:
<html>
<body>
<h1>My Home Page</h1>
<div class="menu">
<ul>
<li>HTML</li>
<li>PHP</li>
<li>JavaScript</li>
</ul>
</div>
</body>
</html>
이제 이 HTML을 파싱할 PHP 스크립트를 작성해 보겠습니다. 파일 이름은 dom_parser.php
이 될 거예요:
<?php
// HTML 파일 로드
$htmlContent = file_get_contents("example.html");
// 새로운 DOMDocument 객체 생성
$dom = new DOMDocument();
// HTML 내용을 DOMDocument에 로드
$dom->loadHTML($htmlContent);
// 새로운 DOMXPath 객체 생성
$xpath = new DOMXPath($dom);
// 모든 <li> 요소 찾기
$liElements = $xpath->query("//li");
// 각 <li> 요소의 내용 표시
foreach ($liElements as $li) {
echo $li->nodeValue . "<br>";
}
?>
이를 단계별로 나누어 설명해 보겠습니다:
1. HTML 파일 로드
$htmlContent = file_get_contents("example.html");
이 줄은 우리의 HTML 파일의 전체 내용을 읽어 $htmlContent
변수에 저장합니다. 책을 열고 모든 페이지의 스냅샷을 찍는 것과 같습니다!
2. DOMDocument 객체 생성
$dom = new DOMDocument();
여기서 우리는 새로운 DOMDocument 객체를 생성합니다. 이는 HTML 구조를 더 가까이 관찰할 수 있도록 도와주는 특별한 확대镜과 같습니다.
3. HTML을 DOMDocument에 로드
$dom->loadHTML($htmlContent);
이제 우리는 특별한 확대镜(DOMDocument)을 사용하여 HTML 내용을 관찰합니다. 이 단계는 HTML을 파싱 준비로 만듭니다.
4. DOMXPath 객체 생성
$xpath = new DOMXPath($dom);
XPath는 HTML 구조를 탐색하는 나침반과 같습니다. 이 줄은 XPath 객체를 생성하여 HTML에서 특정 요소를 찾기 위해 사용됩니다.
5.
$liElements = $xpath->query("//li");
이제 마법이 일어납니다! 우리는 XPath를 사용하여 HTML에서 모든 <li>
요소를 찾습니다. //li
표현식은 "문서 어디서든 <li>
요소를 찾아라"는 의미입니다.
6. 결과 표시
foreach ($liElements as $li) {
echo $li->nodeValue . "<br>";
}
마지막으로, 우리는 찾은 각 <li>
요소를 순회하며 그 내용(nodeValue)을 표시합니다. 각 항목 뒤에 <br>
태그를 추가하여 각 줄에 표시합니다.
스크립트 실행
이 PHP 스크립트를 실행하면 다음과 같은 출력이 나타납니다:
HTML
PHP
JavaScript
와우! 우리는 성공적으로 HTML 파일에서 목록 항목을 추출했습니다.
사용된 메서드
여기서 우리가 사용한 주요 메서드 목록입니다:
메서드 | 설명 |
---|---|
file_get_contents() | 전체 파일을 문자열로 읽습니다 |
new DOMDocument() | 새로운 DOMDocument 객체 생성 |
loadHTML() | 문자열에서 HTML을 로드 |
new DOMXPath() | 새로운 DOMXPath 객체 생성 |
query() | 주어진 XPath 표현식 평가 |
nodeValue | 노드의 값 가져오기 |
결론
이제 여러분은 PHP를 사용한 DOM 파싱의 세계로 첫 걸음을 내디뎠습니다. 연습이 완벽을 만든다는 것을 기억하시고, 다른 HTML 구조와 XPath 쿼리를 실험해 보지 마세요.
제가 가르치는 연간 동안, 가장 중요한 것은 실제로 해보는 것이라는 것을 깨달았습니다. 그래서 여기에 약간의 숙제를 드릴 거예요: 스크립트를 수정하여 HTML에서 다른 요소를 추출해 보세요. <h1>
태그의 내용을 가져오거나, 특정 클래스를 가진 모든 요소를 가져오는 것을 시도해 보세요.
행복한 코딩을 하시고, DOM이 여러분과 함께 하길 바랍니다!
Credits: Image by storyset