PHP 获取远程网页内容的代码(fopen,curl已测)


Posted in PHP onJune 06, 2011

1、fopen的使用

<?php 
$handle = fopen ("http://s.3water.com/", "rb"); 
$contents = ""; 
while (!feof($handle)) { 
$contents .= fread($handle, 8192); 
} 
fclose($handle); 
echo $contents; //输出获取到得内容。 
?>

// 对 PHP 5 及更高版本可以使用下面的代码 
<?php 
$handle = fopen("http://s.3water.com", "rb"); 
$contents = stream_get_contents($handle); 
fclose($handle); 
echo $contents; 
?>

但上面的代码容易出现 failed to open stream: HTTP request failed!错误,解决方法

有人说在php.ini中,有这样两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示通过哪种脚本访问网络,默认前面有个 " ; " 去掉即可。)重启服务器。
但是有些还是会有这个警告信息,想用完美的解决还差一步,还得设置php.ini里面的user_agent,php默认的user_agent是PHP,我们把它改成Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)来模拟浏览器就可以了
PHP 获取远程网页内容的代码(fopen,curl已测)
user_agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"

在工作中遇到这个问题,后完美解决,故分享给大家。
2、通过curl来实现

<?php 
$url = "http://s.3water.com"; 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10); 
$dxycontent = curl_exec($ch); 
echo $dxycontent; 
?>

linux下可以使用下面的代码下载
exec("wget {$url}");

PHP抓取外部资源函数fopen / file_get_contents / curl 的区别

fopen / file_get_contents 每次请求都会重新做DNS查询,并不对DNS信息进行缓存。
但是CURL会自动对DNS信息进行缓存。对同一域名下的网页或者图片的请求只需要一次DNS查询。
这大大减少了DNS查询的次数。
所以CURL的性能比fopen / file_get_contents 好很多。

三水点靠木原创内容,转载请注明出处。

PHP 相关文章推荐
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
PHP Undefined index报错的修复方法
Jul 17 PHP
一个漂亮的php验证码类(分享)
Aug 06 PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
PHP的命令行命令使用指南
Aug 18 PHP
PHP验证码生成原理和实现
Jan 24 PHP
微信支付开发动态链接Native支付
Jul 12 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
php curl操作API接口类完整示例
May 21 PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
Jun 04 #PHP
php写的简易聊天室代码
Jun 04 #PHP
php结合表单实现一些简单功能的例子
Jun 04 #PHP
PHP中对用户身份认证实现两种方法
Jun 04 #PHP
关于php curl获取301或302转向的网址问题的解决方法
Jun 02 #PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
Jun 02 #PHP
PHP curl_setopt()函数实例代码与参数分析
Jun 02 #PHP
You might like
用PHP和ACCESS写聊天室(七)
2006/10/09 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
JavaScript 页面编码与浏览器类型判断代码
2010/06/03 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
python实现每次处理一个字符的三种方法
2014/10/09 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
Django权限控制的使用
2021/01/07 Python
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
文史专业毕业生自荐信
2013/11/17 职场文书
kfc实习自我鉴定
2013/12/14 职场文书
校园报刊亭的创业计划书
2014/01/02 职场文书
普通简短的个人自我评价
2014/02/15 职场文书
保安岗位职责
2014/02/21 职场文书
迁户口计划生育证明
2014/10/19 职场文书
2014年科协工作总结
2014/12/09 职场文书
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记