您好,我需要一些帮助。
这是现有的preg_match代码:
preg_match("/(\/)([0-9]+)(\/?)$/", $_SERVER["REQUEST_URI"], $m);
可以很好地检测以下URI字符串中的post_id
:
http://www.example.com/health-and-fitness-tips/999/
我认为应该有足够的背景。
我正在将999
,post_id
更改为how-do-I-lose-10kg-in-12-weeks', the
post_title`,并需要更改pre_match正则表达式以检测新字符串。
我的第一个想法就是将[a-z]添加到正则表达式的末尾,制作以下正则表达式:
"/(\/)([0-9][a-z]/-+)(\/?)$/"
这可能很简单吗?如果没有,上面有什么问题?
答案 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进行测试。