简单的PHP正则表达式

时间:2011-06-09 12:31:22

标签: php regex zend-framework routing

我正在设置一个Zend_Route(但它仍然只是一个正则表达式),我希望匹配一个像

的网址
/en/experience/this-is-my-name-and-the-last-is-1-of-id-123456.html

所以我想抓住

this-is-my-name-and-the-last-is-1-of

 123456

我试过

\w{2}/experience/(.+)?-(\d+)\.html  

但这似乎不起作用。

如果相反,例如,这将很容易如果它是名称

/en/experience/123456-this-is-my-name-and-the-last-is-1-of-id.html

我可以用

\w{2}/experience/(\d+)-(.+)\.html

但这是一个警察 - 所以关于如何匹配原始格式的任何建议?

2 个答案:

答案 0 :(得分:1)

试试这个:

/\w{2}/experience/(.+?)-(\d+)\.html

答案 1 :(得分:0)

试试这个:
/\w{2}/experience/(.+)?-(\d+)\.html

zend route内部做到了这一点:
preg_match('#^/\w{2}/experience/(.+)?-(\d+)\.html$#i', '/en/experience/this-is-my-name-and-the-last-is-1-of-id-123456.html', $matches);

所以,你的模式只与开头的斜杠匹配。