2010-09-24 79 views
3

我试图在使用php的nav中设置活动类。现在我需要通过目录来设置它,而不是完整的URL,因为每个目录都有一个主目录页面,其目录​​中的其他页面具有子导航。我打算使用以下内容,但是这会返回完整的网址。什么是使用PHP获取URL目录的最佳方式?

function curPageURL() { 
$pageURL = 'http'; 
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
$pageURL .= "://"; 
    if ($_SERVER["SERVER_PORT"] != "80") { 
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
} else { 
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
} 

return $pageURL;} 

function activeLink($pageID) { 
if ($pageID == curPageURL()) { 
    echo 'class="active"'; 
} } 

然后我打电话activeLink()在一个导航项目是这样的:

<li class="projectchild padding1"><a href="http://www.strangeleaves.com/nexus/index.php" <?php activelink('http://www.strangeleaves.com/nexus/index.php'); ?> >nexus</a></li>

你如何修改这个返回目录,而不是将非常感激的建议。

回答

1

如果你想从URL提取directory name可以使用parse_urldirname为:

$url = 'http://www.strangeleaves.com/nexus/index.php'; 
$arr = parse_url($url); 
$path = dirname($arr['path']); // $path is now /nexus 
+0

这种方法并不像人们想象的那样简单。 '$ url'没有很好地形成时,'parse_url'可能会失败。 – 2010-09-24 20:23:13

+0

你可以通过将'PHP_URL_PATH'作为第二个参数传递给'parse_url()' – chigley 2010-09-27 06:11:59

+0

奇妙的家伙,谢谢你的帮助。 – 2010-09-27 08:33:29

0

你可以得到完整的URL,然后爆发,趴下去你的目录,比如:

$currentFile = $_SERVER["PHP_SELF"]; 
$parts = Explode('/', $currentFile); 
$thisDir = $parts[count($parts) - 2]; 
相关问题