文档章节

【php】解决DOM乱码的方法

mickelfeng
 mickelfeng
发布于 2017/02/22 12:49
字数 560
阅读 37
收藏 0

获取网页代码头部信息:

    <meta charset="UTF-8">
    <title>全国大学英语四、六级考试官方成绩查询网站_中国高等教育学生信息网(学信网)</title>
    <meta name="keywords" content="四六级成绩,四六级查分,大学英语四六级"/>
    <meta name="description" content="教育部授权全国高等学校学生信息咨询与就业指导中心承担大学英语四、六级考试成绩网上查询及验证服务工作,并负责该工作运行过程中的大学英语四、六级考试成绩数据库管理与维护。"/>
    <link href='http://t3.chsi.com.cn/chsi/css/common2014.css' rel="stylesheet" type="text/css"/>

开始尝试使用iconv, mb函数将字符串转换成utf-8,没有效果,

PHP如何将字符串转换成utf-8编码?
// Fixes the encoding to uf8
function fixEncoding($in_str)
{
$cur_encoding = mb_detect_encoding($in_str) ;
if($cur_encoding == "UTF-8" && mb_check_encoding($in_str,"UTF-8"))
return $in_str;
else
return utf8_encode($in_str);
} // fixEncoding

使用utf8_encode函数检测是UTF-8编码,然后又修改了linux系统编码,任然是乱码。

然后找到了。

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');

 

© 著作权归作者所有

mickelfeng

mickelfeng

粉丝 237
博文 2802
码字总数 604377
作品 0
成都
高级程序员
私信 提问
PHP DOMDocument保存xml时中文出现乱码

PHP DOMDocument保存xml时中文出现乱码 It event poll2016-09-18197 阅读 xml中文PHPDomDocument乱码 php中DOMDocument对于xml操作我们只要是英文是没有问题了,但如果是中文字体就会有乱码问...

It event poll
2016/09/18
0
0
PHP_DOM处理中文乱码问题,DOMDocument->loadHTML()处理中文的一点问题

DOM是php比较新的xml和html处理类,可以像javascript那样方便的操作DOM树,网上更多的是介绍它处理XML的情况,今天我来介绍一个用它处理html时的中文问题,php版本为5.1.6,所有php代码均为u...

喵王不瞌睡
2014/11/27
162
0
QueryList 4.0 简洁、优雅、可扩展的PHP采集工具(爬虫)

QueryList 简介 是一套简洁、优雅、可扩展的PHP采集工具(爬虫),基于phpQuery。 特性 拥有与jQuery完全相同的CSS3 DOM选择器 拥有与jQuery完全相同的DOM操作API 拥有通用的列表采集方案 拥有...

Jaeger
09/29
0
0
QueryList 4.0 发布,简洁、优雅的PHP采集工具

经过不断的迭代,PHP采集利器QueryList迎来了QueryList4! 下面来看看QueryList4有何改变吧: 完全重写整个底层 完全composer化,不再支持手动安装 PHP版本必须大于PHP7 更加模块化,更容易扩...

土木x
2017/09/29
1K
6
简洁、优雅的 PHP 采集工具(爬虫)--QueryList

QueryList是一套简洁、优雅的PHP采集工具(爬虫),基于phpQuery。 特性: 拥有与jQuery完全相同的CSS3 DOM选择器 拥有与jQuery完全相同的DOM操作API 拥有通用的列表采集方案 拥有强大的HTT...

jaeger_
2016/02/29
4.5K
1

没有更多内容

加载失败,请刷新页面

加载更多

Nginx 快速安装详解

一、Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамбле...

网络小虾米
8分钟前
3
0
技术分享 | slave_relay_log_info 表认知的一些展开

作者:胡呈清 slave_relay_log_info 表是这样的: mysql> select * from mysql.slave_relay_log_info\G *************************** 1. row *************************** Number_of_lin......

爱可生
11分钟前
2
0
nginx配置http访问自动跳转到https

server {listen 80;server_name www.域名.com;rewrite ^(.*) https://$server_name$1 permanent;}server {listen 443;server_name www.域名.com;root /home/www;ssl on;......

很好亦平凡ms
11分钟前
2
0
SpreadJS:一款中国研发的类Excel开发工具,功能涵盖Excel的 95% 以上

Excel 作为一款深受用户喜爱的电子表格工具,借助其直观的界面、出色的计算性能、数据分析和图表,已经成为数据统计领域不可或缺的软件之一。 基于Excel对数据处理与分析的卓越表现,把Excel...

葡萄城技术团队
11分钟前
2
0
用javafx框架tornadofx做了个天气预报的程序

class WeatherApp : App(WeatherView::class)class WeatherView : View("十五天天气预报") { val weatherVM: WeatherViewModel by inject() val controller: WeatherController by......

oschina4cyy
15分钟前
2
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部