다운로드 주소: https://github.com/samacs/simple_html_dom
파서는 HTML 문서를 확인하는 데 도움이 될 뿐만 아니라 그렇지 않은 문서도 구문 분석할 수 있습니다. W3C 표준 HTML 문서를 준수합니다. jQuery와 유사한 요소 선택기를 사용하여 ID, 클래스, 태그 등으로 요소를 찾고 찾습니다. 또한 문서 트리를 추가, 삭제 및 수정하는 기능도 제공합니다. 물론, 이러한 강력한 html Dom 파서는 완벽하지 않습니다. 사용 중 메모리 소비에 매우 주의해야 합니다. 하지만 걱정하지 마십시오. 이 기사에서는 마지막에 너무 많은 메모리를 소비하지 않는 방법을 설명하겠습니다.
사용 시작
클래스 파일을 업로드한 후 이 클래스를 호출하는 세 가지 방법이 있습니다.
URL에서 html 문서 로드
문자열에서 html 로드 문서
파일에서 HTML 문서 로드
.코드는 다음과 같습니다.
< ;? php
// 새 Dom 인스턴스 만들기
$html = new simple_html_dom();
// URL에서 로드
$html->load_file('http://www.jb51 .net ');
//문자열에서 로드
$html->load('
로드하는 경우 문자열에서 html 문서를 생성하려면 먼저 인터넷에서 다운로드해야 합니다. HTML 문서를 가져와 DOM에 로드하려면 cURL을 사용하는 것이 좋습니다.
html 요소 찾기
찾기 기능을 사용하여 html 문서에서 요소를 찾을 수 있습니다. 반환된 결과는 객체를 포함하는 배열입니다. HTML DOM 구문 분석 클래스의 함수를 사용하여 이러한 개체에 액세스합니다.
.코드는 다음과 같습니다.
//html 문서에서 하이퍼링크 요소 찾기
$a = $html->find('a');
//찾기 ( N) 하이퍼링크, 찾을 수 없는 경우 빈 배열이 반환됩니다.
$a = $html->find('a', 0);
// ID가 main$ main = $html->find('div[id=main]',0);
// id 속성을 포함하는 모든 div 요소 찾기
$divs = $html->find( 'div [id]');
//id 속성을 포함하는 모든 요소 찾기
$divs = $html->find('[id]');
?>
또한 jQuery와 유사한 선택기를 사용하여 위치가 지정된 요소를 찾을 수 있습니다:
.코드는 다음과 같습니다.
// id='#container'인 요소 찾기
$ret = $html->find('#container');
/ / 모든 클래스 찾기= foo의 요소
$ret = $html->find('.foo');
// 여러 html 태그 찾기
$ret = $html->find(' a, img' );
// 이렇게 사용할 수도 있습니다
$ret = $html->find('a[title], img[title]');
?>
파서는 하위 요소 검색을 지원합니다
.코드는 다음과 같습니다.
php
//ul 목록에서 모든 li 항목 찾기
$ret = $html->find('ul li');
//찾기 지정된 클래스가 있는 li 항목=ul 목록에서 선택됨
$ret = $html->find('ul li.selected');
?>
이것이 사용하기 번거롭다고 생각된다면, 내장된 함수를 이용하면 쉽게 사용할 수 있습니다. 위치가 지정된 요소의 상위 요소, 하위 요소 및 인접 요소
. 코드는 다음과 같습니다.
// 상위 요소 반환
$e->parent;
// 배열 반환 하위 요소
$e->children;
// 지정된 하위 요소를 인덱스 번호로 반환
$e->children(0);
// 첫 번째 리소스 속도 반환
$e->first_child ();
// 마지막 하위 요소 반환
$e ->last _child ();
//이전 인접 요소 반환
$e-> ;prev_sibling ();
//다음 인접 요소 반환
$e-> next_sibling ();
?>
요소 속성 작업
간단한 정규식을 사용하여 속성 선택기를 작동합니다.
[attribute] - 특정 속성을 포함하는 html 요소를 선택합니다.
[attribute=value] - 지정된 값 속성을 가진 모든 html 요소를 선택합니다.
[attribute!=value] - 지정된 값 이외의 속성을 가진 모든 html 요소 선택
[attribute^=value] - 지정된 값으로 시작하는 속성을 가진 모든 html 요소 선택
[attribute$=value] 모든 html 요소 선택
[attribute*=value] - 모든 html 요소 선택
호출 요소 속성 파서
DOM의 요소 속성도 객체입니다.
.코드는 다음과 같습니다.
// 이 예에서는 $a의 앵커 링크 값이 $link 변수에 할당됩니다.
$link = $a->href;
? > $link = $html->find('a',0)->href;
각 개체에는 4가지 기본 개체 속성이 있습니다.
tag – html 태그 이름을 반환합니다.
innertext – innerHTML을 반환합니다
outertext – externalHTML 반환
plaintext – html 태그의 텍스트 반환
파서에서 요소 편집
요소 속성 편집 사용법은
.코드는 다음과 같습니다.
< ?php
//$a
$a->href = 'http://www.jb51.net';
의 앵커 링크에 새 값 할당// 앵커 링크 삭제
$ a->href = null;
//앵커 링크가 있는지 감지
if(isset($a->href)) {
//Code
}
?>
파서에서 요소를 추가하거나 삭제하는 특별한 방법은 없지만 다르게 사용할 수 있습니다.
. 코드는 다음과 같습니다.
// 캡슐화 요소
$e->outertext = '
수정된 html DOM 문서를 저장하는 것도 매우 간단합니다:
. 코드는 다음과 같습니다.
$doc = $html;
// 출력
echo $doc;
?>
파서가 너무 많은 메모리를 소비하는 것을 방지하는 방법
이 글의 시작 부분에서 저자는 Simple HTML DOM의 문제점을 언급했습니다. 파서가 너무 많은 메모리를 소비합니다. PHP 스크립트가 너무 많은 메모리를 차지하면 웹사이트가 응답하지 않고 일련의 심각한 문제가 발생할 수 있습니다. 해결 방법도 매우 간단합니다. 파서가 HTML 문서를 로드하고 사용한 후에는 이 개체를 정리해야 합니다. 물론 문제를 너무 심각하게 받아들이지는 마세요. 2~3개의 문서만 로드된 경우 청소 여부는 별 차이가 없습니다. 5개, 10개 이상의 문서를 로드할 때 하나를 사용한 후 메모리를 지우는 것은 전적으로 귀하의 책임입니다 ^_^
.코드는 다음과 같습니다. 다음과 같습니다:
$html->clear();
?>
위 내용을 포함하여 PHP 파싱 html 클래스 라이브러리 simple_html_dom을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.