【问题标题】:PHP match string parent level URL string only. Ignore sub-directory pathsPHP 仅匹配字符串父级 URL 字符串。忽略子目录路径
【发布时间】:2017-12-12 02:19:00
【问题描述】:

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

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

这仍然适用于任何分层,所以:

parent-page/sub-page

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

谢谢! 标记。

【问题讨论】:

    标签: php regex string drupal drupal-7


    【解决方案1】:

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

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

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

    如果这不起作用,请提供有关您的 URI 值的更具体的详细信息。

    一个可能有用的参考:https://stackoverflow.com/a/4731027/2943403

    【讨论】:

    • 这非常有效。我不敢相信我忽略了这一点。谢谢!
    【解决方案2】:

    你可以用'parent-page'分解url并计算数组以查看它是否是子级。

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

    由于 explode 删除了“父页面”并创建了一个包含其余部分的数组,因此您最终应该得到一个包含“http://”的项目。
    如果您获得第二个项目,即您的子页面。

    【讨论】:

      【解决方案3】:

      $_GET['q'] 变量应该包含当前页面路径。尝试使用它而不是您的 $url_vars

      对于上下文模块的一些更高级的使用检查:

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

      【讨论】:

        猜你喜欢
        • 2013-11-19
        • 1970-01-01
        • 2014-05-18
        • 1970-01-01
        • 2011-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多