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 相关文章推荐
第十三节--对象串行化
Nov 16 PHP
PHP 简单数组排序实现代码
Aug 05 PHP
PHP的可变变量名的使用方法分享
Feb 05 PHP
php addslashes 利用递归实现使用反斜线引用字符串
Aug 05 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
php遍历删除整个目录及文件的方法
Mar 13 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
Mar 18 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
Dec 28 PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 PHP
php解析非标准json、非规范json的方式实例
Dec 10 PHP
Laravel的加密解密与哈希实例讲解
Mar 24 PHP
PHP实现两种排课方式
Jun 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
论建造顺序的重要性
2020/03/04 星际争霸
PHP学习之PHP运算符
2006/10/09 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
jquery里的正则表达式说明
2011/08/03 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
2016/10/27 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
python读取Android permission文件
2013/11/01 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
全球立体声:World Wide Stereo
2018/09/29 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
Java面试笔试题大全
2016/11/23 面试题
造型师求职自荐信
2013/09/27 职场文书
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
旅游安全协议书
2014/04/21 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
导游词之张家口
2019/12/13 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python