用于活动菜单状态的PHP Regex


PHP Regex for active menu states

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

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

这是这样工作的:

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

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

例如

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

以上所有内容都需要将列表元素设置为具有相同的活动状态,但此链接:

find-a-job/about-us

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

我试过一个例子:

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

但这当然会匹配每个找到工作的url。

我需要某种通配符方法,所以find-a-job/jobs/*

有什么帮助吗?

您已经有了它,如果preg_match使用/find-a-job/jobs/而不是/find-a-job/,它应该可以在中工作

这应该能在中工作

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

Regex Demo