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 相关文章推荐
global.php
Dec 09 PHP
php数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
基于PHP magic_quotes_gpc的使用方法详解
Jun 24 PHP
ThinkPHP让分页保持搜索状态的方法
Jul 02 PHP
一个经典的PHP验证码类分享
Nov 18 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP实现的堆排序算法详解
Aug 17 PHP
PHP中cookie知识点学习
May 06 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 23 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
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
Bootstrap中表单控件状态(验证状态)
2016/08/04 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
Python中的作用域规则详解
2015/01/30 Python
python实现汉诺塔递归算法经典案例
2021/03/01 Python
深入浅析python定时杀进程
2016/06/06 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
Python select及selectors模块概念用法详解
2020/06/22 Python
Python 代码调试技巧示例代码
2020/08/11 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
.net面试题
2016/09/17 面试题
英语师范专业毕业生自荐信
2013/09/21 职场文书
个人思想理论学习的自我鉴定
2013/11/30 职场文书
学生实习介绍信
2014/01/15 职场文书
大学生在校学习的自我评价
2014/02/18 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
MyBatis配置文件解析与MyBatis实例演示
2022/04/07 Java/Android