将一个字符串与另一个包含正则表达式的字符串匹配

时间:2014-04-03 10:25:01

标签: php regex

我有两个字符串:

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

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

我尝试使用preg_quote()因为:

  

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

但是,为了不接收Unknown modifier '\'错误,我必须[pre | ap]挂起分隔符,即便如此,我只是得到一个空数组。我不确定怎么回事。

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

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

我是以正确的方式来做这件事的吗?我怎样才能实现我的要求?

1 个答案:

答案 0 :(得分:2)

在没有preg_match的情况下试用preg_quote

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