Preg_match正则表达式帮助

时间:2009-10-05 03:03:30

标签: php regex preg-match

您好,我需要一些帮助。

这是现有的preg_match代码:

preg_match("/(\/)([0-9]+)(\/?)$/", $_SERVER["REQUEST_URI"], $m);

可以很好地检测以下URI字符串中的post_id

http://www.example.com/health-and-fitness-tips/999/

我认为应该有足够的背景。

我正在将999post_id更改为how-do-I-lose-10kg-in-12-weeks', the post_title`,并需要更改pre_match正则表达式以检测新字符串。

我的第一个想法就是将[a-z]添加到正则表达式的末尾,制作以下正则表达式:

"/(\/)([0-9][a-z]/-+)(\/?)$/"

这可能很简单吗?如果没有,上面有什么问题?

3 个答案:

答案 0 :(得分:2)

不完全:([0-9][a-z]/-+)是“一个数字,后跟一个字母,后跟至少一个破折号。”

您想要([-0-9a-z]+)

答案 1 :(得分:0)

我只会使用\w

preg_match('!/([-\w]+)/?$!', $_SERVER['REQUEST_URI'], $m);

来自Character Classes or Character Sets

  

\w代表“单词字符”,   通常是[A-Za-z0-9_]。请注意   包含下划线和   位数。

答案 2 :(得分:0)

\w代表单词,可以是大写字母和小写字母A到Z和a到z,数字0到9或_。它相当于[A-Za-z0-9_]。您可以在此处online tester进行测试。