php-getRelativePath PHP计算文件的相对路径

在程序中经常会用到相对路径,这里写个函数。
[关键词] parse_url

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function abpath($a, $b) {

$ainfo = parse_url($a);

$binfo = parse_url($b);
$apath = ltrim($ainfo['path'], '/');
$bpath = ltrim($binfo['path'], '/');

$arr = explode('/',$apath);
$brr = explode('/',$bpath);

foreach ($arr as $key=>$value) {
if($value==$brr[$key]) {
$brr[$key] = '..';
}
}
$cha = implode('/',$brr);
return $cha;
}

计算文件$b相对于文件$a的路径,如
$a = ’/a/b/c/d/e.php’; $b = ’/a/b/12/34/c.php’;

结果
../../12/34/c.php

下面是关于parse_url的用法

1
2
3
4
5
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);

以上例程会输出:

1
2
3
4
5
6
7
8
9
10
11
12
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)

/path