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 stream_context_create()作用和用法分析
Mar 29 PHP
PHP 年龄计算函数(精确到天)
Jun 07 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
Jun 24 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 PHP
php强大的时间转换函数strtotime
Feb 18 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
Oct 29 PHP
php实现XML和数组的相互转化功能示例
Feb 08 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
PHP Laravel中的Trait使用方法
Jan 20 PHP
laravel 去掉index.php伪静态的操作方法
Oct 12 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 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
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
深入PHP FTP类的详解
2013/06/13 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
基于jQuery创建鼠标悬停效果的方法
2015/03/07 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
Python栈类实例分析
2015/06/15 Python
Python选课系统开发程序
2016/09/02 Python
python 基础教程之Map使用方法
2017/01/17 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
详解python中的 is 操作符
2017/12/26 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
python七夕浪漫表白源码
2019/04/05 Python
Python 中@property的用法详解
2020/01/15 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
pymysql模块使用简介与示例
2020/11/17 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
结构工程研究生求职信
2013/10/13 职场文书
旅游个人求职信范文
2014/01/30 职场文书
自立自强的名人事例
2014/02/10 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
李开复演讲稿
2014/05/24 职场文书
技术经济专业求职信
2014/09/03 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
教师辞职信范文
2015/02/28 职场文书
个性发展自我评价2015
2015/03/09 职场文书
小学数学教师研修日志
2015/11/13 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers