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调用Oracle存储过程
Oct 09 PHP
php ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
php读取文件内容的三种可行方法示例介绍
Feb 08 PHP
php中session过期时间设置及session回收机制介绍
May 05 PHP
使用PHP破解防盗链图片的一个简单方法
Jun 07 PHP
PHP时间和日期函数详解
May 08 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
Jun 29 PHP
php中switch语句用法详解
Aug 17 PHP
Yii清理缓存的方法
Jan 06 PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 PHP
php实现的生成排列算法示例
Jul 25 PHP
Thinkphp5框架异常处理操作实例分析
Jun 03 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中的串行化变量和序列化对象
2006/09/05 PHP
php 数组使用详解 推荐
2011/06/02 PHP
php的memcached客户端memcached
2011/06/14 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
jquery实现简易的移动端验证表单
2015/11/08 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
Django多个app urls配置代码实例
2020/11/26 Python
爱游人:Travelliker
2017/09/05 全球购物
介绍一下XMLHttpRequest对象
2012/02/12 面试题
Unix控制后台进程都有哪些进程
2016/09/22 面试题
物业工作计划书
2014/01/10 职场文书
总经理司机职责
2014/02/02 职场文书
扶贫办主任查摆“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
预备党员考察意见范文
2015/06/01 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书