PHP 仅匹配字符串父级 URL 字符串。忽略子目录路径

PHP match string parent level URL string only. Ignore sub-directory paths

我正在寻求在模板文件 (Drupal 7) 中实现一个简单的条件,该文件检查 URL 路径并且仅在字符串为 exact/page 是父级时的条件下运行。目前,我有一个条件工作,但条件仍然在 URL 字符串的子页面匹配时执行。例如:

$url_vars = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (strpos($url_vars, 'parent-page') !== false) {
// Do something
}

这仍然适用于任何层次结构,因此:

parent-page/sub-page

如何使这项工作有效,以便条件仅严格管理父目录而不管理子目录?任何指导或想法都会有很大帮助。我更愿意在服务器端处理,而不是在前端处理。

谢谢! 马克.

我不确定您的 REQUEST_URI 字符串会有多少变化,但这可能就足够了:

if(strpos($_SERVER['REQUEST_URI'],'parent-page')!==false && strpos($_SERVER['REQUEST_URI'],'parent-page/')===false){

这只是检查 parent_page(静态字符串)是否存在于 REQUEST_URI 中并且它没有尾随 /

如果这不能解决问题,请提供有关您的 URI 值的更具体的详细信息。

可能有用的参考:

你可以用'parent-page'把url炸开,数一下数组,看看是不是子层。

$arr = explode("parent-page", $url_vars);
If(count($arr) <= 1) {
      // Parent-page
}

由于 explode 删除了 'parent-page' 并创建了一个剩余的数组,因此您最终应该得到一个包含 "http://".
的项目 如果你得到第二个项目是你的子页面。

$_GET['q'] 变量应包含当前页面路径。尝试使用它代替您的 $url_vars.

有关上下文模块的一些更高级的用法检查:

https://www.drupal.org/project/context