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操作文件方法问答
Mar 16 PHP
phpmyadmin MySQL 加密配置方法
Jul 05 PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
php中定时计划任务的实现原理
Jan 08 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
php利用curl抓取新浪微博内容示例
Apr 27 PHP
Linux下创建nginx脚本-start、stop、reload…
Aug 03 PHP
PHP解析目录路径的3个函数总结
Nov 18 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
Laravel 5.5 实现禁用用户注册示例
Oct 24 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
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
2006/10/09 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
php和nginx交互实例讲解
2019/09/24 PHP
IE8 浏览器Cookie的处理
2009/01/31 Javascript
JQuery jsonp 使用示例代码
2009/08/12 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
Angular实现响应式表单
2017/08/04 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
python模块之StringIO使用示例
2015/04/08 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
python实现输入数字的连续加减方法
2018/06/22 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
小组口号大全
2014/06/09 职场文书
跑操口号
2014/06/12 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
2019大学生实习报告
2019/06/21 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书