一道求$b相对于$a的相对路径的php代码

yipeiwu_com7年前PHP代码库

php面试题的题目:
$a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php'; //计算出 $b 相对于 $a 的相对路径应该是 ../../c/d

php面试题的答案:

复制代码 代码如下:

function getRelative($a,$b) {
$arr = explode("/",$a);
$brr = explode("/",$b);
$c = count($arr)-2;
$d = count($brr)-2;
//之所以减二,一个是不在后面的文件名,
//一个是数组的索引是从0开始的,比数组中的第一维的个数要小一
$e = ($c>$d) ? $c:$d;
$str1 = $str2 = '';
for ($j=0;$j<=$e;$j++) {
$cur_a = isset($arr[$j]) ? $arr[$j] : '';
$cur_b = isset($brr[$j]) ? $brr[$j] : '';
if ($cur_a == $cur_b) {
continue;
} else {
if ($j <= $c)
{
$str1.='/'.$cur_a;
}
if ($j <= $d )
{
$str2.="../";
}
}
}
return $str2.substr($str1,1,strlen($str1));
}

相关文章

PHP两种实现无级递归分类的方法

话不多说,请看代码: /** * 无级递归分类 TP框架 * @param int $assortPid 要查询分类的父级id * @param mixed $tag 上下级分类之...

php实现将Session写入数据库

使用session_set_save_handler()函数,将Session的内容写入数据库 <?php /* *@author Fahy *数据库为m...

PHP使用星号隐藏用户名,手机和邮箱的实现方法

本文实例讲述了PHP使用星号隐藏用户名,手机和邮箱的实现方法。分享给大家供大家参考,具体如下: PHP使用星号替代用户名手机和邮箱这个在许多的活动界面会看到如淘宝的购物界面中的一些客户的...

PHP中opcode缓存简单用法分析

本文实例讲述了PHP中opcode缓存简单用法。分享给大家供大家参考,具体如下: 1.什么是opcode 解释器分析代码之后,生成可以直接运行的中间代码,就称做操作码,opcode 2....

php中数字、字符与对象判断函数用法实例

本文实例讲述了php中数字、字符与对象判断函数用法。分享给大家供大家参考。具体分析如下: 在php判断数字,字符,对象,数组等包括有参见 is_bool()、is_int()、is_in...