php simple dom html 어 지 러 운 코드 분석

1591 단어 PHPdomutf-8
1.난 장 판 해결
의심 할 여지없이,올 라 오 자마자 난 장 판 문제 에 부 딪 혔 다.물론 나 는 문서 에 기 술 된 대로 모든 문 자 는 UTF-8 인 코딩 을 사용한다.
$html = '<p>  </p>'; $dom = new DOMDocument(); @$dom->loadHTML($html); echo $dom->documentElement->nodeValue;

그러나
$html = '<p>  </p>'; $dom = new DOMDocument(); @$dom->loadXML($html); echo $dom->documentElement->nodeValue;

문제 가 없 었 습 니 다.나중에 알 게 되 었 습 니 다.원래 loadHTML 은 HTML 의 성명 meta 태그 에 의존 합 니 다.이러한 태그 가 없 으 면 iso-8859-1 문자 집합 으로 간주 되 기 때문에 어 지 러 운 코드 입 니 다.해결 하려 면 문자열 에 다음 과 같은 태 그 를 머리 에 붙 입 니 다.
$meta = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>'; @$dom->loadHTML($meta . $html);

2.귀속
HTML/XML 은 재 귀적 인 레이아웃 이기 때문에 반드시 재 귀적 으로 옮 겨 다 닐 것 입 니 다.
function _pretty_html_node($node){ //        // 1. XML_TEXT_NODE // 2. XML_ELEMENT_NODE // 3.       foreach($node->childNodes as $n){ $child_text .= _pretty_html_node($n); } //                switch($tag){ case 'a': $href = $node->getAttribute('href'); $text .= "<a href=\"$href\">$child_text</a>"; ... } return $text; }

3.전의 문자 처리 벌칙
텍스트 노드 에 대해 nodeValue 는 html speciachars()의 전 의 를 뒤 집어 야 합 니 다.HTML/XML 을 읽 을 때 텍스트 에 반전 의 미 를 가 집 니 다.예 를 들 어<메모리 에 이미>입 니 다.
원본 다운로드:prettyhtml.php
Related posts:
C\#버 전의 Simple XMLApache 사무 기 를 설치 하 는 과정 에서 웹 페이지 의 난 장 판 문제if-else 최적화 코드 중복 에 대한 반감 화워드 프레스 페이지 코드자 바스 크 립 트 로 팝 업 창 생 성

좋은 웹페이지 즐겨찾기