php解决DOM乱码的方法示例代码


Posted in PHP onNovember 20, 2016

前言

DOM是php比较新的xml和html处理类,可以像javascript那样方便的操作DOM树,网上更多的是介绍它处理XML的情况,今天这篇文章就介绍下php解决DOM乱码的方法,下面话不多说,直接看下面的解决方法。

解决方法如下

/**
 * 请求url页面信息
 * @param str $url
 * @return str mixed|boolean
 */
function curl_get($url) {
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  //302跳转
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0');
  curl_setopt($curl, CURLOPT_REFERER, $url);
  $data = curl_exec($curl);
  $code = curl_getinfo($curl,CURLINFO_HTTP_CODE); //输出请求状态码
  curl_close($curl);
  if(200 == $code) {
    //解决乱码
    if (preg_match('#<meta[^>]*charset="?gb2312"[^>]*>#', $data)) {
      $data = iconv("gb2312","utf-8//IGNORE",$data);
      $data = preg_replace('#<meta[^>]*charset="?gb2312"[^>]*>#is', '<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">', $data);
    }

    if (!preg_match('#<meta charset="utf-8"[^>]*>#is', $data)) {
      $data = str_replace('<head>', '<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">', $data);
    }

    if (preg_match('#<meta charset="utf-8"[^>]*>#is', $data)) {
      $data = preg_replace('#<meta charset="utf-8"[^>]*>#is', '<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">', $data);
    }

    return $data;
  } else {
    return false;
  }

}
/**
 * 获取 DOMDocument 对象
 * @param str $url
 * @return boolean|DOM
 */
function getDom($url) {
  $html_content = curl_get($url);
  if(empty($html_content)) {
    //saveLog($url, '请求失败');
    return false;
  }
  $dom = new DOMDocument('1.0', 'utf-8');
  libxml_use_internal_errors(true);
  $dom->loadHTML($html_content);
  return $dom;
}
$html_content = mb_convert_encoding($html_content, 'UTF-8', 'gb2312');

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
用ODBC的分页显示
Oct 09 PHP
为IP查询添加GOOGLE地图功能的代码
Aug 08 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
Jul 01 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
php实现singleton()单例模式实例
Nov 06 PHP
yii,CI,yaf框架+smarty模板使用方法
Dec 29 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
PHP记录页面停留时间的方法
Mar 30 PHP
php图片上传类 附调用方法
May 15 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
PHP中PDO事务处理操作示例
May 02 PHP
使用Yii2实现主从数据库设置
Nov 20 #PHP
php 二维数组时间排序实现代码
Nov 19 #PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 #PHP
php socket通信简单实现
Nov 18 #PHP
php微信开发之自定义菜单实现
Nov 18 #PHP
php微信开发之百度天气预报
Nov 18 #PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 #PHP
You might like
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
深入分析php之面向对象
2013/05/15 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
php二维码生成
2015/10/19 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
php加密解密字符串示例
2016/10/13 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
浅谈Express异步进化史
2017/09/09 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
Python中给List添加元素的4种方法分享
2014/11/28 Python
python实现感知器算法详解
2017/12/19 Python
django如何实现视图重定向
2019/07/24 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
python标记语句块使用方法总结
2019/08/05 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
便利店促销方案
2014/02/20 职场文书
个人买房协议书范本
2014/10/06 职场文书
悬空寺导游词
2015/02/05 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
幼儿园元旦主持词
2015/07/06 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android