2011-02-16 55 views
0

在PHP中,如何根据我所在的位置获取网址相关指标?示例:如何获得URL相对“深度”?

Location     Return 

example.com    ./ 
example.com/sub   ../ 
example.com/sub/sub  ../../ 

... 
+0

我可以问你想要的原因吗? – Jacob 2011-02-16 00:50:35

+0

我使用一个包含PHP的头文件来引用顶级样式表和一个顶级菜单,而没有消除实际页面使用相对链接的可能性,因此不使用基础href。 – Lazlo 2011-02-16 00:56:46

+0

绝对路径可以使您的代码更好,并结合环境常量,例如`define('BASE_URL','http://example.com/')`,并且仍然允许你使用亲戚。 – Jacob 2011-02-16 01:04:41

回答

2

考虑到你上面的例子:

$url = 'example.com/sub/sub/'; 
$parts = explode('/', $url); 
$parts = array_filter($parts, 'strlen'); 
$path = count($parts) == 1 ? './' : str_repeat('../', count($parts)-1); 

此代码忽略空的部分和结尾的斜杠(例如:example.com//sub/)。

1

不会只计算URL中的斜杠数量就足够了。你可以使用preg_match_all

<?php 
preg_match_all('/\//',$url,$matches); 
echo count($matches); 
?> 

(未测试的代码)

+2

不使用正则表达式。 `substr_count($ url,'/');` – Jacob 2011-02-16 00:52:53

1

嗯,咋的猜测:

function getDeepness($url){ 
    $lvls = substr_count($url, '/'); 

    if(!$lvls){ 
    return "./"; 
    } 

    return str_repeat("../", $lvls); 
}