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将向Java靠拢
Oct 09 PHP
PHP配置文件中最常用四个ini函数
Mar 19 PHP
PHP添加MySQL数据记录代码
Jun 07 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
php实现倒计时效果
Dec 19 PHP
PHP处理数组和XML之间的互相转换
Jun 02 PHP
PHP微信开发之有道翻译
Jun 23 PHP
PHP验证终端类型是否为手机的简单实例
Feb 07 PHP
PHP PDO操作MySQL基础教程
Jun 05 PHP
在Laravel中使用MongoDB的方法示例
Nov 11 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 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注入实例
2006/10/09 PHP
如何使用php输出时间格式
2013/08/31 PHP
php常见的魔术方法详解
2014/12/25 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
javascript操作JSON的要领总结
2012/12/09 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
python中range()与xrange()用法分析
2016/09/21 Python
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
python调用摄像头拍摄数据集
2019/06/01 Python
python中get和post有什么区别
2020/06/19 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
给校长的建议书300字
2014/05/16 职场文书
诉前财产保全担保书
2014/05/20 职场文书
幼儿园教师求职信
2015/03/20 职场文书
合理化建议书范文
2015/09/14 职场文书