PHP文件操作之获取目录下文件与计算相对路径的方法


Posted in PHP onJanuary 08, 2016

获取目录下文件

1、获取目录下文件,不包括子目录

//获取某目录下所有文件、目录名(不包括子目录下文件、目录名) 
  $handler = opendir($dir); 
  while (($filename = readdir($handler)) !== false) {//务必使用!==,防止目录下出现类似文件名“0”等情况 
    if ($filename != "." && $filename != "..") { 
        $files[] = $filename ; 
      } 
    } 
  } 
  closedir($handler); 
    
//打印所有文件名 
foreach ($filens as $value) { 
  echo $value."<br />"; 
}

2、获取目录下所有文件,包括子目录

function get_allfiles($path,&$files) { 
  if(is_dir($path)){ 
    $dp = dir($path); 
    while ($file = $dp ->read()){ 
      if($file !="." && $file !=".."){ 
        get_allfiles($path."/".$file, $files); 
      } 
    } 
    $dp ->close(); 
  } 
  if(is_file($path)){ 
    $files[] = $path; 
  } 
} 
   
function get_filenamesbydir($dir){ 
  $files = array(); 
  get_allfiles($dir,$files); 
  return $files; 
} 
   
$filenames = get_filenamesbydir("static/image/"); 
//打印所有文件名,包括路径 
foreach ($filenames as $value) { 
  echo $value."<br />"; 
}

计算两个文件之间的相对路径方法
php 计算两个文件之间的相对路径方法

例如:
文件A 的路径是 /home/web/lib/img/cache.php
文件B的路径是 /home/web/api/img/show.php
那么,文件A相对于文件B的路径是 ../../lib/img/cache.php,即文件B 访问 文件A的相对路径。

function getRelativePath

<?php 
/** 计算path1 相对于 path2 的路径,即在path2引用paht1的相对路径 
* @param String $path1 
* @param String $path2 
* @return String 
*/ 
function getRelativePath($path1, $path2){ 
  $arr1 = explode('/', $path1); 
  $arr2 = explode('/', $path2); 
 
  // 获取相同路径的部分 
  $intersection = array_intersect_assoc($arr1, $arr2); 
 
  $depth = 0; 
 
  for($i=0,$len=count($intersection); $i<$len; $i++){ 
    if(!isset($intersection[$i])){ 
      $depth = $i; 
      break; 
    } 
  } 
 
  // 将path2的/ 转为 ../,path1获取后面的部分,然后合拼 
  $tmp = array_merge(array_fill(0, count($arr2)-$depth-1, '..'), array_slice($arr1, $depth)); 
 
  $relativePath = implode('/', $tmp); 
 
  return $relativePath; 
} 
?>

demo

<?php 
$path1 = '/home/web/lib/img/cache.php'; 
$path2 = '/home/web/api/img/show.php'; 
 
echo getRelativePath($path1, $path2); // ../../lib/img/cache.php 
?>
PHP 相关文章推荐
用Socket发送电子邮件(利用需要验证的SMTP服务器)
Oct 09 PHP
用PHP和ACCESS写聊天室(十)
Oct 09 PHP
phpMyAdmin 安装及问题总结
May 28 PHP
20个PHP常用类库小结
Sep 11 PHP
APACHE的AcceptPathInfo指令使用介绍
Jan 18 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
PHP实现获取中英文首字母
Jun 19 PHP
php实现json编码的方法
Jul 30 PHP
PHP处理会话函数大总结
Aug 05 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
简单解决微信文章图片防盗链问题
Dec 17 PHP
PHP字典树(Trie树)定义与实现方法示例
Oct 09 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 #PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
Jan 08 #PHP
理解PHP中的Session及对Session有效期的控制
Jan 08 #PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 #PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 #PHP
PHP 7.0.2 正式版发布
Jan 08 #PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 #PHP
You might like
基于PHP+MySQL的聊天室设计
2006/10/09 PHP
PHP APC的安装与使用详解
2013/06/13 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
python中偏函数partial用法实例分析
2015/07/08 Python
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
python实现logistic分类算法代码
2020/02/28 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
车间班长岗位职责
2013/11/30 职场文书
运动会通讯稿400字
2014/01/28 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
2014年元旦感言
2014/03/06 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
酒店端午节活动方案
2014/08/26 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
你需要掌握的20个Python常用技巧
2022/02/28 Python
Redis批量生成数据的实现
2022/06/05 Redis