我对PHP不太好,只是基础知识。所以我使用php将活动状态添加到我的导航链接并使用css来设置样式,我想知道是否有一种方法来使用主题标签。我有两个不同的导航链接,都在一个页面上。第一个工作正常,因为没有使用#,但第二个因为该页面的信息与默认页面在同一页面上,我有以下代码:
<?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";}
?>
Theres the 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 & Air</a></li>
</ul>
每当我将锚链接添加到preg_match()
部分时,我都会收到错误消息。有办法解决这个问题吗?
答案 0 :(得分:0)
网址中以#
开头的部分永远不会传输到服务器,因此$_SERVER['REQUEST_URI']
不会包含它。
因此,不管你得到什么错误,寻找它都没有任何意义。
答案 1 :(得分:0)
我认为你过于复杂,你可以使用strpos
而不是正则表达式:
$navID = "home";
$navID = (strpos($_SERVER['REQUEST_URI'], 'service-area') !== false) ? 'service' : $navID;
//etc
请注意,第一行是为了清晰起见,您也可以将home
放在第二行。