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 相关文章推荐
phpmyadmin的#1251问题
Nov 25 PHP
php adodb连接不同数据库
Mar 19 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 PHP
解决nginx不支持thinkphp中pathinfo的问题
Jul 21 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
Feb 23 PHP
php metaphone()函数的定义和用法
May 15 PHP
CI框架整合smarty步骤详解
May 19 PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
ThinkPHP实现分页功能
Apr 28 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 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
Laravel 5框架学习之用户认证
2015/04/09 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
深入理解JavaScript系列(15) 函数(Functions)
2012/04/12 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
jQuery中innerWidth()方法用法实例
2015/01/19 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
微信小程序实现图片上传
2019/05/23 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
跟老齐学Python之集合(set)
2014/09/24 Python
python实现Floyd算法
2018/01/03 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
Python函数和模块的使用总结
2019/05/20 Python
java判断三位数的实例讲解
2019/06/10 Python
在Python函数中输入任意数量参数的实例
2019/07/16 Python
Pytorch之contiguous的用法
2019/12/31 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
理工科学生的自我评价
2013/12/15 职场文书
打架检讨书400字
2014/01/17 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
学校重阳节活动总结
2015/03/24 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
初二数学教学反思
2016/02/17 职场文书
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏