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 相关文章推荐
第十五节--Zend引擎的发展
Nov 16 PHP
MySQL中create table语句的基本语法是
Jan 15 PHP
UCenter Home二次开发指南
May 28 PHP
php下统计用户在线时间的一种尝试
Aug 26 PHP
$_GET['goods_id']+0 的使用详解
Jun 06 PHP
php缩小png图片不损失透明色的解决方法
Dec 25 PHP
php设置允许大文件上传示例代码
Mar 10 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
php实现图片等比例缩放代码
Jul 23 PHP
PHP之图片上传类实例代码(加了缩略图)
Jun 30 PHP
php数组指针操作详解
Feb 14 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
php数字转汉字代码(算法)
2011/10/08 PHP
FireFox浏览器使用Javascript上传大文件
2013/10/30 PHP
php生成扇形比例图实例
2013/11/06 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&”)
2016/12/23 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
python实现倒计时的示例
2014/02/14 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
WxPython建立批量录入框窗口
2019/02/27 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
python判断链表是否有环的实例代码
2020/01/31 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
《小猫刮胡子》教学反思
2014/02/21 职场文书
售后求职信范文
2014/03/15 职场文书
运动会加油稿100字
2014/09/19 职场文书
销售经理岗位职责
2015/01/31 职场文书
大连导游词
2015/02/12 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
vue打包时去掉所有的console.log
2022/04/10 Vue.js
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL