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的ob_start();控制您的浏览器cache!
Feb 14 PHP
由php if 想到的些问题
Mar 22 PHP
《PHP编程最快明白》第八讲:php启发和小结
Nov 01 PHP
解析php中获取系统信息的方法
Jun 25 PHP
destoon实现公司新闻详细页添加评论功能的方法
Jul 15 PHP
Yii中表单用法实例详解
Jan 05 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
Yii2 如何在modules中添加验证码的方法
Jun 19 PHP
laravel中短信发送验证码的实现方法
Apr 25 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 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基础知识:类与对象(5) static
2006/12/13 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
Python引用计数操作示例
2018/08/23 Python
python gdal安装与简单使用
2019/08/01 Python
CSS3绘制六边形的简单实现
2016/08/25 HTML / CSS
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
农救科工作职责
2013/11/27 职场文书
接受捐赠答谢词
2014/01/27 职场文书
职务任命书范本
2014/06/05 职场文书
信用卡工作证明模板
2014/09/14 职场文书
社团个人总结范文
2015/03/05 职场文书
党员承诺书范文2015
2015/04/27 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书