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 相关文章推荐
新浪新闻小偷
Oct 09 PHP
WML,Apache,和 PHP 的介绍
Oct 09 PHP
php实现文件编码批量转换
Mar 10 PHP
Yii框架登录流程分析
Dec 03 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 PHP
PHP中的Session对象如何使用
Sep 25 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
php实用代码片段整理
Nov 12 PHP
微信公众平台开发(五) 天气预报功能开发
Dec 03 PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
PHP 使用二进制保存用户状态的实例
Jan 29 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
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
laravel安装和配置教程
2014/10/29 PHP
PHP开发中AJAX技术的简单应用
2015/12/11 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
javascript document.referrer 用法
2009/04/30 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
Python文件操作基础流程解析
2020/03/19 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
CSS3实现各种图形的示例代码
2016/10/19 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
会计实习生工作总结的自我评价
2013/10/07 职场文书
给领导的致歉信范文
2014/01/13 职场文书
经济管理毕业生求职信
2014/03/15 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
政风行风评议心得体会
2014/10/21 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
解决redis批量删除key值的问题
2022/03/23 Redis