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中strtotime函数使用方法分享
Jan 10 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
具有时效性的php加密解密函数代码
Jun 19 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
Sep 26 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
PHP中基本HTTP认证技巧分析
Mar 16 PHP
php获取json数据所有的节点路径
May 17 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
THinkPHP获取客户端IP与IP地址查询的方法
Nov 14 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 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
php中time()和mktime()方法的区别
2013/09/28 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
utf8的编码算法 转载
2006/12/27 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
2019/04/04 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
Python用threading实现多线程详解
2017/02/03 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
Django 路由系统URLconf的使用
2018/10/11 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
自我反省检讨书
2014/01/23 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
个人授权委托书样本
2014/09/13 职场文书
大学迎新生标语
2014/10/06 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书