VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • PHP文件操作之获取目录下文件与计算相对路径的方法

这篇文章主要介绍了PHP文件操作技巧之获取目录下文件与计算相对路径的方法,其中获取目录下文件方面分为包含子目录和不包含子目录两种情况,需要的朋友可以参考下

获取目录下文件

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

  1. //获取某目录下所有文件、目录名(不包括子目录下文件、目录名)  
  2.   $handler = opendir($dir);  
  3.   while (($filename = readdir($handler)) !== false) {//务必使用!==,防止目录下出现类似文件名“0”等情况  
  4.     if ($filename != "." && $filename != "..") {  
  5.         $files[] = $filename ;  
  6.       }  
  7.     }  
  8.   }  
  9.   closedir($handler);  
  10.       
  11. //打印所有文件名  
  12. foreach ($filens as $value) {  
  13.   echo $value."<br />";  
  14. }  

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

  1. function get_allfiles($path,&$files) {  
  2.   if(is_dir($path)){  
  3.     $dp = dir($path);  
  4.     while ($file = $dp ->read()){  
  5.       if($file !="." && $file !=".."){  
  6.         get_allfiles($path."/".$file$files);  
  7.       }  
  8.     }  
  9.     $dp ->close();  
  10.   }  
  11.   if(is_file($path)){  
  12.     $files[] = $path;  
  13.   }  
  14. }  
  15.      
  16. function get_filenamesbydir($dir){  
  17.   $files = array();  
  18.   get_allfiles($dir,$files);  
  19.   return $files;  
  20. }  
  21.      
  22. $filenames = get_filenamesbydir("static/image/");  
  23. //打印所有文件名,包括路径  
  24. foreach ($filenames as $value) {  
  25.   echo $value."<br />";  
  26. }  

计算两个文件之间的相对路径方法

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

  1. <?php  
  2. /** 计算path1 相对于 path2 的路径,即在path2引用paht1的相对路径  
  3. * @param String $path1  
  4. * @param String $path2  
  5. * @return String  
  6. */ 
  7. function getRelativePath($path1$path2){  
  8.   $arr1 = explode('/'$path1);  
  9.   $arr2 = explode('/'$path2);  
  10.    
  11.   // 获取相同路径的部分  
  12.   $intersection = array_intersect_assoc($arr1$arr2);  
  13.    
  14.   $depth = 0;  
  15.    
  16.   for($i=0,$len=count($intersection); $i<$len$i++){  
  17.     if(!isset($intersection[$i])){  
  18.       $depth = $i;  
  19.       break;  
  20.     }  
  21.   }  
  22.    
  23.   // 将path2的/ 转为 ../,path1获取后面的部分,然后合拼  
  24.   $tmp = array_merge(array_fill(0, count($arr2)-$depth-1, '..'), array_slice($arr1$depth));  
  25.    
  26.   $relativePath = implode('/'$tmp);  
  27.    
  28.   return $relativePath;  
  29. }  
  30. ?> 

demo

  1. <?php  
  2. $path1 = '/home/web/lib/img/cache.php';  
  3. $path2 = '/home/web/api/img/show.php';  
  4.    
  5. echo getRelativePath($path1$path2); // ../../lib/img/cache.php  
  6. ?>

出处:http://www.phpfensi.com/php/20210704/16998.html


相关教程