将活动状态设置为具有类似开始 (PHP) 的 url

Set active state to a url with similar begin (PHP)

我正在使用以下代码在我的菜单中设置活动状态:

<li class="<?php echo basename($_SERVER['PHP_SELF']) == 'index.php' ? 'active' : '';?>">
<a href="index.php">Home</a></li>
<li class="<?php echo basename($_SERVER['PHP_SELF']) == 'projects.php' ? 'active' : '';?>">
<a href="projects.php">Projects</a></li>

并且它适用于特定的 url,例如 projects.php,但我们还有以下 "projects",我们想在菜单中为它们设置活动状态:

是否有任何替代方法可以将活动状态设置为url,它开始或包含“项目” url,以这种方式它适用于 project-client-name.php 和 projects.php:

<?php echo basename($_SERVER['PHP_SELF']) == 'project' ? 'active' : '';?>

提前致谢。

尽管这是一个奇怪的解决方案,但您可以使用 strpos() or preg_match()

<?php echo strpos(basename($_SERVER['PHP_SELF']), 'project') !== FALSE ? 'active' : '';?>

strpos 查找第一次出现的子字符串,returns 它是 int 位置,如果找不到则 FALSE

以下代码适用于我:

<?php echo preg_match("/^(project){1}(.){0,}\w+/", basename($_SERVER['PHP_SELF'])) ? 'active' : ''; ?>

谢谢!