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 Http_Template_IT类库进行模板替换
Mar 19 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
PHP之uniqid()函数用法
Nov 03 PHP
php实现curl模拟ftp上传的方法
Jul 29 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 PHP
分享一个漂亮的php验证码类
Sep 29 PHP
laravel实现批量更新多条记录的方法示例
Oct 22 PHP
PHP中rename()函数的妙用讲解
Feb 28 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 PHP
php实现微信和支付宝支付的示例代码
Aug 11 PHP
PHP如何使用array_unshift()在数组开头插入元素
Sep 01 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 Hash函数,增强密码安全
2011/02/25 PHP
第三章 php操作符与控制结构代码
2011/12/30 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
PHP查询快递信息的方法
2015/03/07 PHP
PHP通过API获取手机号码归属地
2015/05/28 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
2017/11/07 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
document.write的几点使用心得
2014/05/14 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
[51:34]Ti4主赛事胜者组 DK vs EG 2
2014/07/19 DOTA
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
Python黑魔法@property装饰器的使用技巧解析
2016/06/16 Python
详解python中asyncio模块
2018/03/03 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
大学生自我鉴定
2013/12/08 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
党员活动日总结
2014/05/05 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
公司放假通知怎么写
2015/04/15 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书