2011-12-22 6 views
0

私はPHPにはあまり良くありません。だから私は私のナビゲーションリンクにアクティブな状態を追加し、それらをスタイルするためにCSSを使用してPHPを使用しています、私は、ハッシュタグを使用する方法を考えていた。私は1つのページに2つの異なるナビゲーションリンクを持っています。何の#を使用しないため、最初の1が正常に動作しますが、2番目には、そのページの情報は、デフォルトと同じページ上にあるため、私は次のコードを持っている:アクティブ状態を追加するために私のnavで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とはリンクしているTheresの。

<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 –

0

私はあなたが上に複雑なものだと思います、あなただけの代わりに正規表現のstrposを使用することができます。最初の行は、明確にするためであることを

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

注、あなただけのように、第2行目にhomeを置くことができますよく

関連する問題