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 相关文章推荐
PHP实现网上点歌(二)
Oct 09 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
May 29 PHP
php中Ctype函数用法详解
Dec 09 PHP
php简单判断两个字符串是否相等的方法
Jul 13 PHP
win7系统配置php+Apache+mysql环境的方法
Aug 21 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
Jun 28 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
phpMyAdmin无法登陆的解决方法
Apr 27 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
PHP使用标准库spl实现的观察者模式示例
Aug 04 PHP
PHP的JSON封装、转变及输出操作示例
Sep 27 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
php下过滤HTML代码的函数
2007/12/10 PHP
php获取当前网址url并替换参数或网址的方法
2010/06/06 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
php判断一个数组是否为有序的方法
2015/03/27 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
理解Javascript闭包
2013/11/01 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
JavaScript获得页面base标签中url的方法
2015/04/03 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
中英文自我评价常用句型
2013/12/19 职场文书
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
大学毕业生推荐信
2014/07/09 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB