html을 효과적으로 파싱하기 위해서는 라이브러리의 도움이 필요하다.
1. 다운로드
이 링크 (source forge) 를 따라 들어가면 다운로드 링크를 얻을 수 있다. 나는 1.7버전을 다운받음.
그리고 simple_html_dom.php 파일을 제외하고 전부 삭제한다.
2. 과정
include './plugins/simple-html-dom/simple-html-dom.php';
include './plugins/simple-html-dom/simple-html-dom.php';
$url = 'https://bino.blog/';
$html = file_get_contents($url);
file_get_contents 함수를 이용하여 해당 주소의 모든 html 코드를 파싱한다.
그 다음에는 이유는 모르겠지만 str_get_html 함수로 file_get_contents 함수를 한번 더 불러와야 한다.
아마 내부 함수를 사용하기 위해 변수가 클래스로 변화하는 과정인가보다.
include './plugins/simple-html-dom/simple-html-dom.php';
$url = 'https://bino.blog/';
$html = file_get_contents($url);
if ($html !== false) {
$html = str_get_html($html);
}
foreach($html->find('a') as $element)
echo $element . '<br>';
$html 변수에 find 내부 함수를 적용시킨다.
find('a')의 뜻은 모든 a태그를 불러온다는 뜻이다.
a 태그의 프로퍼티를 가져오고 싶다면
foreach($html->find('a') as $element)
echo $element->href . '<br>';
의외로 매우 간단하게 해당 프로퍼티의 이름을 함수로 불러오면 된다.
$element->outertext
자바스크립트에서의 outerHTML 처럼 태그 전체를 가져온다.
$element->innertext
자바스크립트에서의 innerHTML 처럼 태그의 내용을 가져온다.