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 文件扩展名 获取函数
Jun 03 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
Jun 17 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
Jun 25 PHP
php与java通过socket通信的实现代码
Oct 21 PHP
php5.3以后的版本连接sqlserver2000的方法
Jul 28 PHP
php用户注册时常用的检验函数实例总结
Dec 22 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 PHP
php+iframe 实现上传文件功能示例
Mar 04 PHP
thinkphp5 路由分发原理
Mar 18 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 程序员的调试技术小结
2009/11/15 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
webpack-mvc 传统多页面组件化开发详解
2019/05/07 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
零基础写python爬虫之神器正则表达式
2014/11/06 Python
Python 中的with关键字使用详解
2016/09/11 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
应聘自荐书
2013/10/08 职场文书
上课迟到检讨书
2014/02/19 职场文书
购房意向书范本
2014/04/01 职场文书
厨房管理计划书
2014/04/27 职场文书
师恩难忘教学反思
2014/04/27 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
团队会宣传标语
2014/10/09 职场文书
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL