我有两个字符串:
$relativeUrl = "/string1/(\d+)/string2/(\d+)/string3";
$currentUrl = "/string1/1234/string2/5678/string3";
我试图断言$currentUrl
确实匹配$relativeUrl
,其中包含两个数字((\d+)
)的正则表达式。我想要的结果只是true
或false
值。
我尝试使用preg_quote()
因为:
preg_quote()接受str并在作为正则表达式语法一部分的每个字符前放置一个反斜杠。 如果您有一个需要在某些文本中匹配的运行时字符串,并且该字符串可能包含特殊的正则表达式字符,这将非常有用。
但是,为了不接收Unknown modifier '\'
错误,我必须[pre | ap]挂起分隔符,即便如此,我只是得到一个空数组。我不确定怎么回事。
preg_match("^" . preg_quote($relativeUrl) . "^", $currentUrl, $matches);
var_dump($matches); // Gives array(0) { }
我是以正确的方式来做这件事的吗?我怎样才能实现我的要求?
答案 0 :(得分:2)
在没有preg_match
的情况下试用preg_quote
:
preg_match('#' . $relativeUrl . '#', $currentUrl, $matches);