[php-dom] php-dom使用注意事项
2015-12-28 16:39
645 查看
/* 注意事项: 1. 在loadHTML之前,应该将内容转义为UTF-8编码的,这样子避免出现entity等等的报错; 2. 已经使用了php函数htmlspecialchars()转换的html实体,再经过DOM解析转换后,会被直接还原为标签,如:<br/> 在dom解析之后,直接被还原为 "<br/>"; */
$doc = new DOMDocument('1.0' , 'UTF-8'); //var_dump($doc); libXml_use_internal_errors(true); $doc->loadHTML(mb_convert_encoding($content , 'HTML-ENTITIES', 'UTF-8')); $node = $doc->getElementsByTagName('div'); $arr_return = array(); // 只发了一条动态的情况还没有考虑清楚 for($c = 0; $c<$node->length; $c++){ $arr_return[$c]['time'] = $node->item($c)->getAttribute('hnb-time'); $arr_return[$c]['ftime'] = date('H:i' , $arr_return[$c]['time']); $arr_return[$c]['nation'] = $node->item($c)->getAttribute('hnb-nation'); $arr_return[$c]['nation_info'] = Hnb_Model_Tag::getInstance()->getCndNationalInfoByID($node->item($c)->getAttribute('hnb-nation')); $p_nodes = $node->item($c)->getElementsByTagName('p'); //$doc->encoding = 'UTF-8'; //echo iconv("UTF-8", "GB18030//TRANSLIT", $dom->saveXML($n) ); //$arr_return[$c]['content'] = iconv("UTF-8", "UTF-8", $doc->saveXML($p_nodes->item(0))); //var_dump($p_nodes->item(0)); // 默认将第一个p节点作为内容来处理 $arr_return[$c]['content'] = $doc->saveXML($p_nodes->item(0)); $arr_return[$c]['raw_content'] = $p_nodes->item(0)->textContent; $arr_img_list = []; for($p = 1; $p<$p_nodes->length; $p++){ $img = $doc->saveXML($p_nodes->item($p)); if(preg_match('/jpg|png|gif|jpeg/i' , $img)) { $arr_img_list[] = $img; } } $arr_return[$c]['img_list'] = $arr_img_list; } return $arr_return;
相关文章推荐
- php生成验证码
- 转换流的使用(InputStreamReader,OutputStreamWriter)
- Fresco通过后处理器(Postprocessor)生成仿skype字母和背景色的头像
- 基于ThinkPHP3.23的简单ajax登陆案例
- /etc/php-fpm.d/www.conf 配置注意
- php【基础学习十五】关键词
- PHP-解码unicode编码的中文字符
- php设置编码格式的方法
- PHP提示Notice: Undefined variable的解决办法
- php分享十五:php的数据库操作
- laravel系列1-- laravel安装
- PHP裁剪图片
- 音视频同步(播放)原理
- php【基础学习十四】面向对象
- laravel laravel-elixir not found
- php【基础学习十三】零散知识点
- Yii快速入门经典教程
- 4. Phpstorm svn
- Socket 深度探究 4 PHP (三)
- Socket 深度探究 4 PHP (二)