在PHP中,如何根据我所在的位置获取网址相关指标?示例:如何获得URL相对“深度”?
Location Return
example.com ./
example.com/sub ../
example.com/sub/sub ../../
...
在PHP中,如何根据我所在的位置获取网址相关指标?示例:如何获得URL相对“深度”?
Location Return
example.com ./
example.com/sub ../
example.com/sub/sub ../../
...
考虑到你上面的例子:
$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/
)。
不会只计算URL中的斜杠数量就足够了。你可以使用preg_match_all。
<?php
preg_match_all('/\//',$url,$matches);
echo count($matches);
?>
(未测试的代码)
不使用正则表达式。 `substr_count($ url,'/');` – Jacob 2011-02-16 00:52:53
嗯,咋的猜测:
function getDeepness($url){
$lvls = substr_count($url, '/');
if(!$lvls){
return "./";
}
return str_repeat("../", $lvls);
}
我可以问你想要的原因吗? – Jacob 2011-02-16 00:50:35
我使用一个包含PHP的头文件来引用顶级样式表和一个顶级菜单,而没有消除实际页面使用相对链接的可能性,因此不使用基础href。 – Lazlo 2011-02-16 00:56:46
绝对路径可以使您的代码更好,并结合环境常量,例如`define('BASE_URL','http://example.com/')`,并且仍然允许你使用亲戚。 – Jacob 2011-02-16 01:04:41