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生成静态页面详解
Dec 05 PHP
PHP服务器页面间跳转实现方法
Aug 02 PHP
IIS安装Apache伪静态插件的具体操作图文
Jul 01 PHP
eaglephp使用微信api接口开发微信框架
Jan 09 PHP
php建立Ftp连接的方法
Mar 07 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
PHP文件上传操作实例详解
Sep 27 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
Swoole实现异步投递task任务案例详解
Apr 02 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 PHP
php实例化对象的实例方法
Nov 17 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.MVC的模板标签系统(四)
2006/09/05 PHP
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
js获取元素在浏览器中的绝对位置
2010/07/24 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
js Calender控件使用详解
2015/01/05 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
2015/12/08 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python正则表达式抓取成语网站
2013/11/20 Python
python实现红包裂变算法
2016/02/16 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
python中比较两个列表的实例方法
2019/07/04 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
会计电算化专业个人的自我评价
2013/11/24 职场文书
财务主管自我鉴定
2014/01/17 职场文书
先进集体获奖感言
2014/02/13 职场文书
2014年开学第一课活动方案
2014/03/06 职场文书
一年级小学生评语
2014/04/22 职场文书
财务负责人任命书
2014/06/06 职场文书
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript