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 归并排序 数组交集
May 10 PHP
php 定界符格式引起的错误
May 24 PHP
php 在windows下配置虚拟目录的方法介绍
Jun 26 PHP
PHP使用正则表达式清除超链接文本
Nov 12 PHP
改写ThinkPHP的U方法使其路由下分页正常
Jul 02 PHP
使用php的HTTP请求的库Requests实现美女图片墙
Feb 22 PHP
codeigniter中view通过循环显示数组数据的方法
Mar 20 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
php车辆违章查询数据示例
Oct 14 PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
php实现微信公众平台发红包功能
Jun 14 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
smarty实例教程
2006/11/19 PHP
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
PHP往XML中添加节点的方法
2015/03/12 PHP
8个必备的PHP功能开发
2015/10/02 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
jQuery textarea的长度进行验证
2009/05/06 Javascript
document.compatMode介绍
2009/05/21 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
javascript date格式化示例
2013/09/25 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
如何用Python 加密文件
2020/09/10 Python
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
肯尼迪就职演说稿
2013/12/31 职场文书
会计岗位职责范本
2014/03/07 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
租房协议书
2014/09/12 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python
git中cherry-pick命令的使用教程
2022/06/25 Servers