存在GET变量时导航栏中的活动链接

时间:2014-06-24 13:34:53

标签: javascript php html css twitter-bootstrap

我有一个小问题。我从this等答案中知道如何在导航栏上显示active链接。

但是,如果链接后面有GET变量,这不起作用。因此,如果我加载<li>class = "active"获得daily.php,如果我加载daily.php?project=4,则无法获得该类

我现在正在使用导航栏并激活某个链接的代码是:

<?php
function echoActiveClassIfRequestMatches($requestUri)
{
    $current_file_name = basename($_SERVER['REQUEST_URI'], ".php");

    if ($current_file_name == $requestUri)
        echo 'class="active"';
}
?>

<div id="menu">
<ul>
<li <?php echoActiveClassIfRequestMatches("daily") ?>><a href="daily.php">Daily</a></li>
<li <?php echoActiveClassIfRequestMatches("weekly") ?>><a href="weekly.php">Weekly</a></li>
<li <?php echoActiveClassIfRequestMatches("monthly") ?>><a href="monthly.php">Monthly</a></li>
</ul></div>

正如我所说,如果不是daily.php我加载daily.php?project=4,这不起作用。

欢迎所有帮助,如果您需要更多代码,请直接询问!

非常感谢。

2 个答案:

答案 0 :(得分:3)

你可以使用strpos而不是&#34; ==&#34;。它将检查URL是否包含您想要的地址。 或者您可以使用explode

拆分URL
$current_url = explode("?", $_SERVER['REQUEST_URI']);
echo $current_url[0] ;

答案 1 :(得分:1)

这是一些修改过的功能

<?php
function echoActiveClassIfRequestMatches($requestUri)
{       
    $current_file_name = basename($_SERVER['REQUEST_URI'], ".php");

    if (strpos($current_file_name,$requestUri)!==false)
        echo 'class="active"';
}
?>