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 empty函数判断mysql表单是否为空
Apr 12 PHP
PHP获取url的函数代码
Aug 02 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
May 27 PHP
解析CI的AJAX分页 另类实现方法
Jun 27 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
May 07 PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
laravel5使用freetds连接sql server的方法
Dec 07 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 PHP
php数组和链表的区别总结
Sep 20 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
PHP 文章中的远程图片采集到本地的代码
2009/07/30 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
2020/02/20 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
Python连接mysql方法及常用参数
2020/09/01 Python
详解python tkinter 图片插入问题
2020/09/03 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
物流仓管员岗位职责
2013/12/04 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
关于诚信的活动方案
2014/08/18 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
项目验收申请报告
2015/05/15 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
《认识钟表》教学反思
2016/02/16 职场文书
七年级上册生物的课件
2019/08/07 职场文书
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript