PHP Regex用于活动菜单状态

时间:2016-03-31 09:46:03

标签: php regex preg-match

我有一个函数可以检查我传入的页面链接和请求URI。

function setActiveMenuState($pageLink) {
    $requestUri = $_SERVER['REQUEST_URI'];
    if ($pageLink == $requestUri) {
        return "active";
    }
}

这就像这样:

<li class="<?= setActiveMenuState("/find-a-job/"); ?>">

这很好,但我现在需要在页面链接可能不同的页面上检查活动状态。

E.g。

find-a-job
find-a-job/jobs/test-job-1
find-a-job/jobs/test-job-2

以上所有需要将list元素设置为具有相同的活动状态,但是此链接:

find-a-job/about-us

不应该将该列表元素设置为活动状态。

我试过了一个例子:

if (preg_match($pageLink, $requestUri)) {
    return "active";
}

但那当然会匹配找到工作的每个网址。

我需要某种通配符方法,所以找一份工作/工作/ *

任何帮助?

2 个答案:

答案 0 :(得分:1)

你已经拥有它,preg_match使用/find-a-job/jobs/代替/find-a-job/,它应该可以使用

答案 1 :(得分:0)

这应该有效

preg_match("/find-a-(job)(?:\/\1s.*)?/", $input_line, $output_array);

<强> Regex Demo