preg_match表现不像我记得的那样

时间:2012-09-20 00:25:41

标签: php preg-match behavior

这绝对是让我不知所措。我经常使用PHP,但这会让我的脑子油腻:

preg_match("/\/([0-9]*)\//i","http://url.com/folder/133302/",$s);
print_r($s);

输出:

Array ( [0] => // [1] => )

我希望它与URL中指定的数字相匹配,我确定这曾经有用:s

如果我添加一个字母,它可以正常工作(字母x):

preg_match("/\/([0-9]*)x\//i","http://url.com/folder/133302x/",$s);
print_r($s);

输出:

Array ( [0] => /133302x/ [1] => 133302 )

非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:1)

preg_match("/\/([0-9]+)\//i","http://url.com/folder/133302/",$s);

如果您说*(“零次或多次”),您也会匹配//+说“一次或多次”,这就是你所需要的。

此外,您可能想要使用其他分隔符,并删除无用的i修饰符:

preg_match("#/([0-9]+)/#","http://url.com/folder/133302/",$s);