【问题标题】:Match one string against another string that contains regex将一个字符串与另一个包含正则表达式的字符串匹配
【发布时间】:2014-04-03 10:25:01
【问题描述】:

我有两个字符串:

$relativeUrl = "/string1/(\d+)/string2/(\d+)/string3";
$currentUrl  = "/string1/1234/string2/5678/string3";

我试图断言 $currentUrl 确实与包含两个数字 ((\d+)) 的正则表达式的 $relativeUrl 匹配。我想要的结果只是一个truefalse 值。

我尝试过使用preg_quote(),因为:

preg_quote() 接受 str 并在作为正则表达式语法一部分的每个字符前面放置一个反斜杠。 如果您有一个需要在某些文本中匹配的运行时字符串,并且该字符串可能包含特殊的正则表达式字符,这将非常有用

但是,我必须 [pre|app] 附加分隔符,以免收到 Unknown modifier '\' 错误,即使这样,我也只能得到一个空数组。我不知道还有什么方法是最好的。

preg_match("^" . preg_quote($relativeUrl) . "^", $currentUrl, $matches);

var_dump($matches); // Gives array(0) { }

我这样做是否正确?我怎样才能达到我的要求?

【问题讨论】:

    标签: php regex


    【解决方案1】:

    试试这个preg_match 不带preg_quote

    preg_match('#' . $relativeUrl . '#', $currentUrl, $matches);
    

    【讨论】:

    • 你测试过这个吗?它不起作用。我仍然得到一个空数组。 3v4l.
    • 效果很好,谢谢。看起来我根本不需要preg_quote()。我会在 7 分钟内接受... :-)
    猜你喜欢
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多