• 技术文章 >后端开发 >php教程

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

    2016-05-28 11:49:21原创286
    获取目录下文件

    1、获取目录下文件,不包括子目录

    //获取某目录下所有文件、目录名(不包括子目录下文件、目录名) 
      $handler = opendir($dir); 
      while (($filename = readdir($handler)) !== false) {//务必使用!==,防止目录下出现类似文件名“0”等情况 
        if ($filename != "." && $filename != "..") { 
            $files[] = $filename ; 
          } 
        } 
      } 
      closedir($handler); 
        
    //打印所有文件名 
    foreach ($filens as $value) { 
      echo $value."
    "; }

    2、获取目录下所有文件,包括子目录

    function get_allfiles($path,&$files) { 
      if(is_dir($path)){ 
        $dp = dir($path); 
        while ($file = $dp ->read()){ 
          if($file !="." && $file !=".."){ 
            get_allfiles($path."//m.sbmmt.com/m/".$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."
    "; }

    计算两个文件之间的相对路径方法
    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('//m.sbmmt.com/m/', $path1); 
      $arr2 = explode('//m.sbmmt.com/m/', $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('//m.sbmmt.com/m/', $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 
    ?> 
    
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 目录 文件 路径
    上一篇:thinkphp中字符截取函数msubstr()用法分析_PHP 下一篇:ThinkPHP中html:list标签用法分析_PHP
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• PHP是如何存储变量的?zval结构体你了解吗?• web开发中PHP MySQL分页显示示例分析_PHP• 第一节 简介_PHP• mysql数据库优化_PHP• Yii快速入门经典教程_php实例
    1/1

    PHP中文网