0

您好,我需要一些帮助。

这是现有的 preg_match 代码:

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

它可以很好地检测post_id以下 URI 字符串中的内容:

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

我相信这应该是足够的背景。

我正在将999、 、更改post_idhow-do-I-lose-10kg-in-12-weeks', thepost_title`,并且需要更改 pre_match 正则表达式以检测新字符串。

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

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

可能就这么简单?如果不是,上面有什么问题?

4

3 回答 3

2

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

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

于 2009-10-05T03:07:51.980 回答
0

我只会使用\w

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

字符类或字符集

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

于 2009-10-05T03:07:37.847 回答
0

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

于 2009-10-05T05:35:17.060 回答