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 相关文章推荐
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
Jun 24 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
PHP基于CURL进行POST数据上传实例
Nov 10 PHP
php使用pdo连接并查询sql数据库的方法
Dec 24 PHP
Laravel日志用法详解
Oct 09 PHP
PHP生成图片验证码功能示例
Jan 12 PHP
thinkphp 手机号和用户名同时登录
Jan 20 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 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
多文件上载系统完整版
2006/10/09 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
2013/06/25 PHP
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
js简单实现交换Li的值
2014/05/22 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
jQuery实现跨域
2015/02/03 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
关于使用js算总价的问题
2017/06/23 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
Java程序员常见面试题
2015/07/16 面试题
应届生英语教师求职信
2013/11/05 职场文书
给领导的致歉信范文
2014/01/13 职场文书
婚礼主持结束词
2014/03/13 职场文书
MySQL5.7并行复制原理及实现
2021/06/03 MySQL
html form表单基础入门案例讲解
2021/07/15 HTML / CSS