PHP中使用file_get_contents抓取网页中文乱码问题解决方法


Posted in PHP onDecember 17, 2014

本文实例讲述了PHP中使用file_get_contents抓取网页中文乱码问题解决方法。分享给大家供大家参考。具体方法如下:

file_get_contents函数本来就是一个非常优秀的php自带本地与远程文件操作函数,它可以让我们不花吹挥之力把远程数据直接下载,但我在使用它读取网页时会碰到有些页面是乱码了,这里就来给各位总结具体的解决办法.

根据网上有朋友介绍说原因可能是服务器开了GZIP压缩,下面是用firebug查看我的网站的头信息,Gzip是开了的,请求头信息原始头信息,代码如下:

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 

Accept-Encoding gzip, deflate 

Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 

Connection keep-alive 

Cookie __utma=225240837.787252530.1317310581.1335406161.1335411401.1537; __utmz=225240837.1326850415.887.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=%E4%BB%BB%E4%BD%95%E9%A1%B9%E7%9B%AE%E9%83%BD%E4%B8%8D%E4%BC%9A%E9%82%A3%E4%B9%88%E7%AE%80%E5%8D%95%20site%3Awww.nowamagic.net; PHPSESSID=888mj4425p8s0m7s0frre3ovc7; __utmc=225240837; __utmb=225240837.1.10.1335411401 

Host 3water.com 

User-Agent Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0

可以从header信息中找到 Content-Encoding 项是 Gzip.

解决办法比较简单,就是用 curl 代替 file_get_contents 去获取,然后在 curl 配置参数中加一条,代码如下:

curl_setopt($ch, CURLOPT_ENCODING, "gzip");

今天用 file_get_contents 抓图片的时候,开始没发现这个问题,废了老大劲才找出来.

使用自带的zlib库,如果服务器已经装了zlib库,用下面的代码可以轻易解决乱码问题,代码如下:

$data = file_get_contents("compress.zlib://".$url);

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP和ACCESS写聊天室(十)
Oct 09 PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
PHP 反向排序和随机排序代码
Jun 30 PHP
PHP学习之数组值的操作
Apr 17 PHP
php中通过虚代理实现延迟加载的实现代码
Jun 10 PHP
初学PHP的朋友 经常问的一些问题。不断更新
Aug 11 PHP
php cookie中点号(句号)自动转为下划线问题
Oct 21 PHP
php正则替换处理HTML页面的方法
Jun 17 PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
基于PHP微信红包的算法探讨
Jul 21 PHP
PHP加MySQL消息队列深入理解
Feb 27 PHP
apache中为php 设置虚拟目录
Dec 17 #PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
Dec 17 #PHP
Linux中为php配置伪静态
Dec 17 #PHP
phpmyadmin提示The mbstring extension is missing的解决方法
Dec 17 #PHP
非常实用的PHP常用函数汇总
Dec 17 #PHP
php中magic_quotes_gpc对unserialize的影响分析
Dec 16 #PHP
php提示Warning:mysql_fetch_array() expects的解决方法
Dec 16 #PHP
You might like
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
收集前端面试题之url、href、src
2018/03/22 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
2019/11/09 Javascript
js实现简单的倒计时
2021/01/28 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
Python编程之属性和方法实例详解
2015/05/19 Python
python语言使用技巧分享
2016/05/31 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
python-opencv颜色提取分割方法
2018/12/08 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
个人思想理论学习的自我鉴定
2013/11/30 职场文书
计算机操作自荐信
2013/12/07 职场文书
交通事故检查书范文
2014/01/30 职场文书
建议书怎么写
2014/03/12 职场文书
企业工会工作总结2015
2015/05/13 职场文书
解除合同协议书范本
2016/03/21 职场文书
Python3 如何开启自带http服务
2021/05/18 Python
关于python爬虫应用urllib库作用分析
2021/09/04 Python