2012-05-07 3 views
0

私は訪問者が現在いるページに応じてメニューに太字のリンクを作成しようとしています。私はそれが次のコードで作業を得ることができたが、リンクがかもしれので、問題は、私のコードは、オプションの下のサブメニューの可能性を持っているということです。

index.php?page=category 
index.php?page=category&subcategory=something 
index.php?page=category&subcategory=somethingelse 

のサブカテゴリが正常に動作しているが、問題があります私は "index.php?page = category"に一致する方法がありません。なぜなら、 "something"と "somethingelse"の両方のサブカテゴリも太字になるからです。

"page = category"の正確な文字列に一致する方法はありますか?

<? 
$urlstring = $_SERVER['QUERY_STRING']; 
if (preg_match ("/page=category/i", $urlstring)) { 
echo "<b>"; 
} 
?> 
+0

preg_matchは、$ _GET ['page']の何が問題なのかを突き抜けますか? –

+0

あなたのページのサイト構造に関する詳細を提供する必要があります。私はあなたがメニューオプションが選択されるたびにindex.phpをリロードしていると思います。代わりに、メニューを固定しておき、iFrameを選択内容に更新することをお勧めします。あなたはこの効果と大胆な効果の両方を達成するためにPHPを必要としません。 – Stencil

+0

[parse_str](http://www.php.net/manual/en/function.parse-str.php)をチェックアウトすることができます。それはおそらくあなたの問題を解決することができます。 – Zombaya

答えて

0

うんちょうどまた、あなたは(あなたがスタイルをより詳細に制御を持っているあなたは、むしろ<b>を使用するよりも太字だどんな要素に大胆さを持つクラスを適用する場合があります、あなたも変えることができ$_GET['page']

を使用色)あなただけの等号演算子でこれを行うことができます

乾杯 -D

+0

それは働いて、ありがとうございます:) – user1227914

1

if ("page=category" == $url_string) 

これは、はっきりと読みやすく、おそらく高速です。

if (preg_match("/^page=category$/"', $url_string) 

ドル記号は、比較は文字列であることを保証:あなたはこのように、文字列の先頭と末尾を指定するマーカーで、わずかに正規表現を変更することによって、同じ結果を達成できることを言って

キャレット(^)は、文字列の先頭でも同じことを行います。つまり、文字列の先頭にある文字列を正確にチェックしていることを指定しています"page = cat ..."

この種の正規表現の使用についての詳細は、http://www.regular-expressions.info/anchors.html

関連する問題