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

5年以前  |  阅读数:747 次  |  编程语言:PHP 

获取目录下文件

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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
贪吃蛇
文件下载
双位运算符
发送邮件
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
提取后缀名
年的日历图
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例