> 백엔드 개발 > PHP 튜토리얼 > PHP 단순 DOM HTML이 잘못된 문자를 구문 분석합니다.

PHP 단순 DOM HTML이 잘못된 문자를 구문 분석합니다.

WBOY
풀어 주다: 2016-08-08 09:28:17
원래의
1212명이 탐색했습니다.

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 要颠末 htmlspeciachars() 转义. 由于读取 HTML/XML 时, 会对文本进行反转义, 比如 > 在内存中已经是 >了.

下载源码:pretty_html.php

Related posts:

  1. C# 版的 SimpleXML
  2. 自架设Apache办事器过程当中的网页乱码问题
  3. if-else对优化代码冗余度的反感化
  4. Wordpress分页代码
  5. 用Javascript生成弹出窗口

以上就介绍了php simple dom html 解析乱码,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿