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分页显示制作详细讲解
Nov 19 PHP
php实现首页链接查询 友情链接检查的代码
Jan 05 PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
php中的curl_multi系列函数使用例子
Jul 29 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
Nov 03 PHP
PHP+MySQL删除操作实例
Jan 21 PHP
php实现微信公众平台账号自定义菜单类
Oct 11 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
Oct 08 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+MySQL修改记录的方法
2015/01/21 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
PHP替换Word中变量并导出PDF图片的实现方法
2020/11/26 PHP
Javascript Math对象
2009/08/13 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
python中format()函数的简单使用教程
2018/03/14 Python
Python中正则表达式的用法总结
2019/02/22 Python
Numpy的简单用法小结
2019/08/28 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
Python解析json代码实例解析
2019/11/25 Python
Python 实现try重新执行
2019/12/21 Python
Python接口测试数据库封装实现原理
2020/05/09 Python
最新离婚协议书范本
2014/08/19 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
小学庆六一活动总结
2014/08/28 职场文书
六查六看心得体会
2014/10/14 职场文书
小学数学教学随笔
2015/08/14 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
详解Oracle块修改跟踪功能
2021/11/07 Oracle