preg_match和preg_replace无法匹配模式

时间:2015-08-17 14:47:36

标签: php regex

我正在使用以下正则表达式模式来查找网址的一部分:

$pattern = "(\d+)-.*";
//$pattern = "(\d+)-.*[.]htm.*";

$replacement = "/going/somewhere?$1";
$subject = "http://mudomain.com/59016-string.htm";
preg_match($pattern, $subject,$matches);
$final = preg_replace($pattern, $replacement, $subject);

echo $final;
var_dump($matches);

模式应匹配

  

59016-string.htm

但我得到的只是输出为null。 我在这里做错了什么?

获得解决方案后

编辑

供参考:

http://www.php.net/manual/en/regexp.reference.delimiters.php

http://php.net/manual/en/ref.pcre.php

1 个答案:

答案 0 :(得分:3)

你忘记了正则表达式分隔符:

$pattern = '/(\d+)-.*/';

在PHP中,它们是不可或缺的。 另外,请注意我使用单撇号:这是有目的地完成的,因此我们不必使用\d加倍反斜杠。