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新手谈谈我的学习心得
Feb 25 PHP
php ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 PHP
php session安全问题分析
Jun 24 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
php三元运算符知识汇总
Jul 02 PHP
PHP邮箱验证示例教程
Jun 01 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
Feb 15 PHP
PHP检查端口是否可以被绑定的方法示例
Aug 09 PHP
php实现数组中出现次数超过一半的数字的统计方法
Oct 14 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
Jul 08 PHP
PHP 实现重载
Mar 09 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和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
jquery 批量上传图片实现代码
2010/01/28 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
github配置使用指南
2014/11/18 Python
python实现Adapter模式实例代码
2018/02/09 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
python扫描线填充算法详解
2020/02/19 Python
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
html5启动原生APP总结
2020/07/03 HTML / CSS
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
蔻驰美国官网:COACH美国
2016/08/18 全球购物
应届行政管理专业个人自我评价
2013/12/28 职场文书
迟到检讨书大全
2014/01/25 职场文书
二手车交易协议书标准版
2014/11/16 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
《日月潭》教学反思
2016/02/20 职场文书
安全责任协议书范本
2016/03/23 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
Win10 Anaconda安装python-pcl
2022/04/29 Servers
Spring Boot 实现 WebSocket
2022/04/30 Java/Android