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实现链结人气统计
Oct 09 PHP
利用discuz实现PHP大文件上传应用实例代码
Nov 14 PHP
php adodb介绍
Mar 19 PHP
使用XDebug调试及单元测试覆盖率分析
Jan 27 PHP
如何突破PHP程序员的技术瓶颈分析
Jul 17 PHP
php使用wordwrap格式化文本段落的方法
Mar 17 PHP
使用新浪微博API的OAuth认证发布微博实例
Mar 27 PHP
php提交post数组参数实例分析
Dec 17 PHP
PHP 文件上传后端处理实用技巧方法
Jan 06 PHP
php表单习惯用的正则表达式
Oct 11 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
Dec 04 PHP
PHP7生产环境队列Beanstalkd用法详解
May 19 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数组内存耗用太多问题的解决方法
2010/04/05 PHP
PHP游戏编程25个脚本代码
2011/02/08 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
Javascript 继承机制实例
2009/08/12 Javascript
javascript中的array数组使用技巧
2010/01/31 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
JS实现日期时间动态显示的方法
2015/12/07 Javascript
微信小程序 less文件编译成wxss文件实现办法
2016/12/05 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
深入了解Python数据类型之列表
2016/06/24 Python
Python实现购物车购物小程序
2018/04/18 Python
Python常见字典内建函数用法示例
2018/05/14 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
简述python&amp;pytorch 随机种子的实现
2020/10/07 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
python音频处理的示例详解
2020/12/23 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
HTML5文档结构标签
2017/04/21 HTML / CSS
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
报到证丢失证明
2014/01/11 职场文书
质量保证书范本
2014/04/29 职场文书
军训新闻稿范文
2015/07/17 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书