【问题标题】:PHP Regex to match url contains url fragment匹配 url 的 PHP 正则表达式包含 url 片段
【发布时间】:2017-07-08 18:03:55
【问题描述】:

我有一个 url 片段:page/login,我需要知道另一个 url 片段是否包含它们。

这些,将匹配:

/admin/page/login/
/admin/page/login
admin/page/login
http://www.dot.com/admin/page/login
/admin/page/login?id=10
/admin/page/login/id/10
/admin/page/login/?id=10
/admin/page/login/user?id=10
/admin/page/login/user/?id=10
page/login
page/login/
page/login/id/10
/page/login/id/10

这些不是:

/admin/firstpage/login
admin/page/loginOk
/admin/page/loginOk/id/10
mypage/login/id/10
/mypage/login/id/10
mypage/login

我试过了:page\/login[\/\s\?], \/?page\/login[\/\s\?] 没有任何结果

【问题讨论】:

    标签: php regex url url-rewriting


    【解决方案1】:

    您可以使用单词边界,以便不匹配部分匹配项。

    \bpage\/login[\/\s?]
    

    演示:https://regex101.com/r/yhNsdw/1/

    此外,如果您更改分隔符,则不需要转义任何正斜杠。

    【讨论】:

    • 我添加了一个“?”到最后。因为在 regex100 中,一些表达式正在工作,因为在行尾结束。我已经更新了你的演示:regex101.com/r/yhNsdw/2 这是最后的表达式:\bpage\/login[\/\s?]?
    • 抱歉,如果 url 以 page/login 结尾,您的正则表达式将无法正常工作。如果我在末尾添加?,则匹配页面/登录等网址。 ¿我如何添加以片段结尾的 url 作为选项?
    • 可能是\bpage\/login([\/\s?]|$)?这意味着 URL(没有查询字符串)可以以正斜杠、空格、问号或任何内容结尾。 regex101.com/r/yhNsdw/4
    • 太棒了!感谢您添加解释
    猜你喜欢
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多