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生成缩略图的函数代码(修改版)
Jan 18 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
Dec 19 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
Aug 06 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
php递归删除目录与文件的方法
Jan 30 PHP
php通过array_merge()函数合并关联和非关联数组的方法
Mar 18 PHP
php数字每三位加逗号的功能函数
Oct 22 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
PHP检测接口Traversable用法详解
Dec 29 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
Jun 05 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 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桌面中心(四) 数据显示
2007/03/11 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
JavaScript 中使用 Generator的方法
2017/12/29 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
详解用python实现简单的遗传算法
2018/01/02 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
python的slice notation的特殊用法详解
2019/12/27 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
同学聚会邀请函
2015/01/30 职场文书
MySql数据库触发器使用教程
2022/06/01 MySQL