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 相关文章推荐
PHP similar_text 字符串的相似性比较函数
May 26 PHP
关于php mvc开发模式的感想
Jun 28 PHP
PHP与SQL注入攻击防范小技巧
Sep 16 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
php使用curl模拟登录后采集页面的例子
Nov 04 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
PHP中把数据库查询结果输出为json格式简单实例
Apr 09 PHP
Smarty使用自定义资源的方法
Aug 08 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
Sep 26 PHP
PHP实现合并两个排序链表的方法
Jan 19 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
Oct 21 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中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
怎么在Windows系统中搭建php环境
2013/08/31 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
PHP实现计算器小功能
2020/08/28 PHP
javascript比较文档位置
2008/04/08 Javascript
jQuery 表格工具集
2010/04/25 Javascript
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
js Math 对象的方法
2013/09/01 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
一分钟学会JavaScript中的try-catch
2020/12/14 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
python中星号变量的几种特殊用法
2016/09/07 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
python常用数据重复项处理方法
2019/11/22 Python
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
为什么需要版本控制?
2013/08/08 面试题
法律专业应届本科毕业生求职信
2013/10/25 职场文书
大学生村官典型材料
2014/01/12 职场文书
律师催款函范文
2015/06/24 职场文书
初中班干部工作总结
2015/08/10 职场文书
健康教育主题班会
2015/08/14 职场文书
创业计划书之面包店
2019/09/17 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
Python Django ORM连表正反操作技巧
2021/06/13 Python