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 相关文章推荐
简单的过滤字符串中的HTML标记
Dec 25 PHP
PHP insert语法详解
Jun 07 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
Jun 18 PHP
PHP数据过滤的方法
Oct 30 PHP
php图片缩放实现方法
Feb 20 PHP
PHP中shuffle数组值随便排序函数用法
Nov 21 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
Mar 27 PHP
php curl 获取https请求的2种方法
Apr 27 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
php分页查询的简单实现代码
Mar 14 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 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去除字符串换行符示例分享
2014/02/13 PHP
Zend Framework教程之配置文件application.ini解析
2016/03/10 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
实例讲解PHP表单处理
2019/02/15 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
javascript针对DOM的应用分析(二)
2012/04/15 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
Vue是怎么渲染template内的标签内容的
2020/06/05 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
python发腾讯微博代码分享
2014/01/10 Python
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
python模块之StringIO使用示例
2015/04/08 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
python创建文本文件的简单方法
2020/08/30 Python
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
建筑自我鉴定
2013/10/19 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
优秀学生干部推荐材料
2014/02/03 职场文书
灰雀教学反思
2014/04/28 职场文书
物流管理专业自荐信
2014/06/23 职场文书
小学班主任个人总结
2015/03/03 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书