PHP 获取远程文件内容的函数代码


Posted in PHP onMarch 24, 2010

如下函数:

<? 
/** 
获取远程文件内容 
@param $url 文件http地址 
*/ 
function fopen_url($url) 
{ 
if (function_exists('file_get_contents')) { 
$file_content = @file_get_contents($url); 
} elseif (ini_get('allow_url_fopen') && ($file = @fopen($url, 'rb'))){ 
$i = 0; 
while (!feof($file) && $i++ < 1000) { 
$file_content .= strtolower(fread($file, 4096)); 
} 
fclose($file); 
} elseif (function_exists('curl_init')) { 
$curl_handle = curl_init(); 
curl_setopt($curl_handle, CURLOPT_URL, $url); 
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT,2); 
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($curl_handle, CURLOPT_FAILONERROR,1); 
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Trackback Spam Check'); //引用垃圾邮件检查 
$file_content = curl_exec($curl_handle); 
curl_close($curl_handle); 
} else { 
$file_content = ''; 
} 
return $file_content; 
} 
?>

相关解释:
1,ini_get : Returns the value of the configuration option as a string on success, or an empty string on failure(读取 php.ini 配置文件中的值)
2,; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On(配置文件中的内容)
3,fopen( "rb"): 在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。
注意: 为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。
注意: 再一次,为移植性考虑,强烈建议你重写那些依赖于 't' 模式的代码使其使用正确的行结束符并改成 'b' 模式。
4,strtolower -- Make a string lowercase
5,curl_init() :curl_init -- Initialize a cURL session(初始化一个cUrl会话)
resource curl_init ( [string url] )
Initializes a new session and return a cURL handle for use with the curl_setopt(), curl_exec(), and curl_close() functions.
url--If provided, the CURLOPT_URL option will be set to its value. You can manually set this using the curl_setopt() function.
Returns a cURL handle on success, FALSE on errors.
6,curl_setopt -- Set an option for a cURL transfer(提供设置)
bool curl_setopt ( resource ch, int option, mixed value )
Sets an option on the given cURL session handle. (具体请看 PHP 手册) There:
CURLOPT_URL :The URL to fetch. You can also set this when initializing a session with curl_init().
CURLOPT_CONNECTTIMEOUT :The number of seconds to wait whilst trying to connect. Use 0 to wait indefinitely.(无限期等待 设置为 0)
CURLOPT_RETURNTRANSFER :TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
CURLOPT_FAILONERROR :TRUE to fail silently if the HTTP code returned is greater than or equal to 400. The default behavior is to return the page normally, ignoring the code.
CURLOPT_USERAGENT :The contents of the "User-Agent: " header to be used in a HTTP request.
7,curl_exec : Perform a cURL session, This function should be called after you initialize a cURL session and all the options for the session are set.
如果成功则返回 TRUE,失败则返回 FALSE。 However, if the CURLOPT_RETURNTRANSFER option is set, it will return the result on success, FALSE on failure
8,curl_close -- Close a cURL session

下面是一些参考代码:
PHP 采集程序 常用函数
PHP 采集获取指定网址的内容

PHP 相关文章推荐
PHP产生随机字符串函数
Dec 06 PHP
获得Google PR值的PHP代码
Jan 28 PHP
php adodb操作mysql数据库
Mar 19 PHP
php处理json时中文问题的解决方法
Apr 12 PHP
centos 5.6 升级php到5.3的方法
May 14 PHP
PHP中static关键字原理的学习研究分析
Jul 18 PHP
php自定义session示例分享
Apr 22 PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 PHP
php有道翻译api调用方法实例
Dec 22 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
Yii框架组件的事件机制原理与用法分析
Apr 07 PHP
PHP中基本符号及使用方法
Mar 23 #PHP
PHP技术开发技巧分享
Mar 23 #PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 #PHP
PHP5 字符串处理函数大全
Mar 23 #PHP
Smarty Foreach 使用说明
Mar 23 #PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 #PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
Mar 23 #PHP
You might like
PHP 和 HTML
2006/10/09 PHP
php下载文件的代码示例
2012/06/29 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
Laravel5中contracts详解
2015/03/02 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
vue组件学习教程
2017/09/09 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
Python解析最简单的验证码
2016/01/07 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
python psutil模块使用方法解析
2019/08/01 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
python中JWT用户认证的实现
2020/05/18 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
电厂厂长岗位职责
2014/01/02 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
护士自荐信范文
2015/03/25 职场文书
升学宴学生致辞
2015/09/29 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫