2010-09-24 112 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]; 
相關問題