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新手上路(十四)
Oct 09 PHP
用 PHP5 轻松解析 XML
Dec 04 PHP
php 在线打包_支持子目录
Jun 28 PHP
PHP 日期时间函数的高级应用技巧
Oct 10 PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 PHP
JpGraph php柱状图使用介绍
Aug 23 PHP
PHP安全配置详细说明
Sep 26 PHP
需要注意的几个PHP漏洞小结
Feb 05 PHP
获取PHP警告错误信息的解决方法
Jun 03 PHP
PHP生成指定长度随机数最简洁的方法
Jul 14 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
Jul 15 PHP
PHP命名空间与自动加载类详解
Sep 04 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实现多条件查询实例代码
2010/07/17 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
nodejs基础知识
2017/02/03 NodeJs
discuz表情的JS提取方法分析
2017/03/22 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
python 申请内存空间,用于创建多维数组的实例
2019/12/02 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
西班牙床垫网上商店:Colchones.es
2018/05/06 全球购物
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
JAVA代码查错题
2014/10/10 面试题
深圳-东方伟业笔试部分
2015/02/11 面试题
网络技术支持面试题
2013/04/22 面试题
交警个人先进事迹材料
2014/05/11 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python