PHP计算两个路径的相对路径

面试遇到的一个笔试题,自己写了一个这样的程序

 1 $a = "a/b/c/d/e/f/1.txt";
 2 $b = "a/b/c/d/f/e/2.txt";
 3
 4 $a_arr = explode(‘/‘,$a);
 5 $b_arr = explode(‘/‘,$b);
 6 foreach($a_arr as $k=>$v){
 7         if($a_arr[$k] == $b_arr[$k]){
 8             unset($a_arr[$k]);
 9             unset($b_arr[$k]);
10         }else{
11             break;
12         }
13 }
14
15 $num = count($b_arr);
16 $url = ‘‘;
17 $a_url = implode(‘/‘,$a_arr);
18 for($i=0;$i<($num-1);$i++){
19     $url .= ‘../‘;
20 }
21 $url .=$a_url;
22 echo $url;

感觉不对,看到别的人做的,顿悟

 1 function relativePath($aPath, $bPath) {
 2                 $aArr = explode(‘/‘, $aPath);    //explode函数用于切分字符串,返回切分后的数组,此处用‘/‘切分字符串
 3                 $bArr = explode(‘/‘, $bPath);
 4                 $aDiffToB = array_diff_assoc($aArr, $bArr);    //array_diff_assoc()用于获取A数组与B数组之间元素的差集,Key和Value都不相同视为不同元素,此处返回在A数组中且与B数组不相同的元素
 5                            $aDiffToA = array_diff_assoc($bArr, $aArr);

           $count = count($aDiffToA);
 6
 7                 $path = ‘‘;
 8                 for($i = 0; $i < $count - 1; $i++){
 9                     $path .= ‘../‘;
10                 }
11
12                 $path .= implode(‘/‘, $aDiffToA);    //implode()用于使用指定字符串连接数组元素,此处返回用‘/‘连接数组元素后的字符串
13
14                 return $path;
15             }
16
17             echo relativePath(‘/a/b/c/d/a.php‘, ‘/a/b/1/2/b.php‘);

PHP计算两个路径的相对路径

时间: 2024-10-19 13:18:41

PHP计算两个路径的相对路径的相关文章

PHP两个文件的相对路径

1 /** 2 * relativePath 计算两个文件的相对路径 3 * @param file1 参作为考路径 4 * @param file2 相对于$file1的路径 5 */ 6 function relativePath($file1, $file2){ 7 $aArr = explode('/', $file1); //explode函数用于切分字符串,返回切分后的数组,此处用'/'切分字符串 8 $bArr = explode('/', $file2); 9 10 $aDiff

计算两个文件相对路径

/**计算两个文件相对路径 */function relative_path($path1,$path2) {    $arr1 = explode('/',dirname($path1));    $arr2 = explode('/',dirname($path2));    for($i=0,$len = count($arr2);$i < $len;$i++) {        if($arr1[$i] != $arr2[$i]) {            break;        }

一道PHP面试题,求两个文件的相对路径

首先原题是这样子的: 写一个函数,计算出两个文件的相对路径,如 $a = '/a/b/c/d/d.php',$b = '/a/b/1/2/c.php' 计算出的$b相对于$a的相对路径应该是:../../c/d 那么对于网上给出的答案,看了看貌似只能针对题目中给出的那个路径来计算,如果路径一变化,类似下面这样,那么那些程序好像没用了,当然有些是有用,但是还是报一些警告出来..... 例如: $a = '/a/b/c/d/e/f/g/h/e.php' $b = '/a/b/1/2/c.php' 再

php获取两个文件的相对路径

例如:文件A 的路径是 /home/web/lib/img/cache.php 文件B的路径是 /home/web/api/img/temp/show.php 那么,文件A相对于文件B的路径是 ../../lib/img/cache.php function getRelativePath($urla,$urlb){ /*******第一步:获取两个文件的相同路径并去掉*****/ //获取路径名 $a_dirname=dirname($urla);   //$a_dirname=/home/w

XHTML 相对路径与绝对路径

文件路径 文件路径就是文件在电脑(服务器)中的位置,表示文件路径的方式有两种:相对路径和绝对路径. 路径标识: 标识符号 说明 / 路径标识 . 当前目录 .. 上一层目录 "."和".."常与"/"结合使用表示各个路径层次: 路径 说明 ./ 当前路径,可省略 / 网站根目录,为绝对路径 ../ 上一层目录,可重复使用,如../../,表示上上层目录 相对路径(Relative Path) 相对路径就是指由这个文件所在的路径引起的跟其它文件(或

计算两个集合的差集——第六期 Power8 算法挑战赛

第六期Power8大赛 1.1 比赛题目 题目: 计算两个集合的差集: 详细说明: 分别有集合A和B两个大数集合,求解集合A与B的差集(A中有,但B中无的元素),并将结果保存在集合C中,要求集合C中的元素升序. 输入为两个文件,分别为A.txt,B.txt,一行一个值,并且是无序的.结果输出到C.txt,即输入文件的差集,一行一个值,并且要求结果升序排列. 考量点: (1) 大数集合求差集: (2) 大数据集合排序: 题目实例: 例如,若集合A={5,20,10,15,25,30},集合B={1

相对路径和绝对路径的区别

绝对路径: 在我们平时使用计算机时要找到需要的文件就必须知道文件的位置,而表示文件的位置的方式就是路径,例如只要看到这个路径:c:/website/img/photo.jpg我们就知道photo.jpg文件是在c盘的website目录下的img子目录中.类似于这样完整的描述文件位置的路径就是绝对路径.我们不需要知道其他任何信息就可以根据绝对路径判断出文件的位置.而在网站中类似以http://www.e3i5.net/img/photo.jpg来确定文件位置的方式也是绝对路径. 在网站的应用中,通

https/相对路径,绝对路径

1. htttps HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版 HTTPS和HTTP的区别主要为以下四点:(来自百度百科) 一.https协议需要到ca申请证书,一般免费证书很少,需要交费. 二.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议. 三.http和https使用的是完全不同的连接方式,用的端口也不一样,前

文件的绝对路径与相对路径

用DW写HTML的时候,可以直接选择到具体文件的路径,现在改用了webstorm,只能选择到与HTML文件同一目录下的文件.就此整理一下文件的绝对路径与相对路径的区别. 1.绝对路径 先说在本地计算机上,文件的绝对路径当然是指:文件在硬盘上真正存在的路径. 例如这个路径:D:/wamp/www/img/icon.jpg告诉我们icon.jpg文件是在D盘的wamp目录下的img子目录中.我们不需要知道其他任何信息就可以根据绝对路径判断出文件的位置. 还有超链接文件位置,也属于绝对路径,例如htt