首页 > 开发 > Php > 正文

PHP文件操作之获取目录下文件与计算相对路径的方法

2020-02-21 20:39:28
字体:
来源:转载
供稿:网友

获取目录下文件

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 ?> 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表