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获取随机数字和字母的方法详解
Jun 06 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
php实现删除空目录的方法
Mar 16 PHP
简单的php+mysql聊天室实现方法(附源码)
Jan 05 PHP
Symfony2 session用法实例分析
Feb 04 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
May 31 PHP
PHP网站自动化配置的实现方法(必看)
May 27 PHP
PHP实现简单计算器小程序
Aug 28 PHP
PHP中__set()实例用法和基础讲解
Jul 23 PHP
php经典趣味算法实例代码
Jan 21 PHP
TP5框架实现签到功能的方法分析
Apr 05 PHP
PHP变量的作用范围实例讲解
Dec 22 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实现ODBC数据分页显示一例
2006/10/09 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
php生成静态文件的多种方法分享
2012/07/17 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
PHP加密技术的简单实现
2016/09/04 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
什么是数据抽象
2016/11/26 面试题
汉语言文学毕业生求职信
2013/10/01 职场文书
测绘工程本科生求职信
2013/10/10 职场文书
网站开发实习生的自我评价
2013/12/11 职场文书
电子商务个人自荐信
2013/12/12 职场文书
我的祖国演讲稿
2014/05/04 职场文书
五水共治一句话承诺
2014/05/30 职场文书
成绩报告单家长评语
2014/12/30 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
代理词怎么写
2015/05/25 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers