通过将当前 URL 与 $_SERVER['QUERY_STRING']; 匹配的粗体链接


bold links by matching current URL with $_SERVER['QUERY_STRING'];

我正在尝试根据访问者当前所在的页面在菜单中创建粗体链接。我设法让它使用以下代码,但问题是我的代码有可能在选项下显示子菜单,因此链接可能是:

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

子类别工作正常,但问题是,我没有办法匹配"index.php?page=category",因为这样子类别"某物"和"其他东西"也会变粗。

有没有办法匹配"页面=类别"的确切字符串,但没有进一步的匹配?

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

你可以只用 equals 运算符来做到这一点,

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

这更清晰,更容易阅读,而且可能更快。

话虽如此,您可以通过使用指定字符串开头和结尾的标记稍微修改正则表达式来获得相同的结果,如下所示:

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

美元符号确保比较是使用不会更进一步的字符串(在"类别"中没有超过"y"的内容。插入符号 (^) 在字符串的开头执行相同的操作:它指定您正在检查一个完全以"page=cat..."开头的字符串。

有关这种正则表达式用法的更多信息:http://www.regular-expressions.info/anchors.html

是的,只需使用$_GET['page']

此外,您可能希望将粗体类应用于要加粗的任何元素,而不是使用<b>(您可以更好地控制样式,甚至可以更改颜色)

干杯-D