2011-12-22 62 views
0

我不是用PHP太好,只是基礎知識。所以我使用PHP活動狀態添加到我的導航鏈接,並使用CSS後,他們的風格,我想知道如果theres方式使用#標籤。我有兩個都在一個頁面上兩個不同的導航鏈接。由於不使用#第一個工作正常,但由於該網頁的信息,第二個是相同的頁面默認情況下,我有以下代碼:我的導航使用的preg_match添加活動狀態

<?php 
if (preg_match ("//", $_SERVER['REQUEST_URI'])){ $navID = "home";} 
if (preg_match ("/service-area/", $_SERVER['REQUEST_URI'])){ $navID = "service";} 
if (preg_match ("/about/", $_SERVER['REQUEST_URI'])){ $navID = "about";} 
    if (preg_match ("/heating-air/", $_SERVER['REQUEST_URI'])){ $navID = "heating";} 
if (preg_match ("/plumbing-hvac/", $_SERVER['REQUEST_URI'])){ $navID = "plumbing";} 
?> 

即使世界的pregmatch這裏是鏈接:

<ul class="right-nav"> 
      <li class="heating-air"><a href="/plumbing-hvac/#heating-air" <?= ($navID == 'heating') ? ' class="active"' : '' ?>>Plumbing</a></li> 
      <li class="plumbing"><a href="/plumbing-hvac/" <?= ($navID == 'plumbing') ? ' class="active"' : '' ?>>Heating &amp; Air</a></li> 
     </ul> 

我得到一個錯誤,每當我添加錨鏈接到preg_match()部分。有沒有解決的辦法?

回答

0

URL中從#開始的部分永遠不會傳輸到服務器,因此$_SERVER['REQUEST_URI']將不包含它。

所以不管你得到錯誤的,它不會使任何意義,尋找它。

+0

感謝您的幫助@hakre – 2011-12-22 16:47:00

0

我覺得你是過於複雜的東西,你可以用strpos,而不是一個正則表達式:

$navID = "home"; 
$navID = (strpos($_SERVER['REQUEST_URI'], 'service-area') !== false) ? 'service' : $navID; 
//etc 

注意,第一行是爲了清楚起見,你可以把home在第二行好。