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 记录进行累加并显示总时长为秒的结果
Nov 04 PHP
PHP json格式和js json格式 js跨域调用实现代码
Sep 08 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
PHP类的封装与继承详解
Sep 29 PHP
PHP内存使用情况如何获取
Oct 10 PHP
Zend Framework缓存Cache用法简单实例
Mar 19 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
Mar 30 PHP
PHP+Session防止表单重复提交的解决方法
Apr 09 PHP
PHP反射学习入门示例
Jun 14 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 14 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源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
python使用百度翻译进行中翻英示例
2014/04/14 Python
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
2015/05/15 Python
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
基于python的字节编译详解
2017/09/20 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
详解Python正则表达式re模块
2019/03/19 Python
python openpyxl使用方法详解
2019/07/18 Python
python定时任务 sched模块用法实例
2019/11/04 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
Python图像读写方法对比
2020/11/16 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
群众路线批评与自我批评
2014/02/06 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
2014年团总支工作总结
2014/11/21 职场文书
2014公司年终工作总结
2014/12/19 职场文书
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
Python多线程 Queue 模块常见用法
2021/07/04 Python