我有一个类似于此http://website.com/clothes/men/type/t-shirts/color/red/size/xl...
的网址,我需要在网址如此http://website.com/clothes/(men or woman)/type/any-type
时执行操作
因此,如果后type/any-type
还有其他值,我不想执行该操作。
我的正则表达式现在看起来像preg_match('/clothes\/(men|women)\/type\/(.*)\/?$/', $_SERVER['REQUEST_URI'])
它符合我想要的情况,但如果网址在该特定键/值对之后继续,它也匹配,因此它也匹配http://website.com/clothes/men/type/t-shirts/color/red
。
所以最后我需要preg_match()
只匹配一个只有type/anything
对的网址。
谢谢。
答案 0 :(得分:3)
您可以使用:
if ( preg_match('~/clothes/(?:wo)?men/type/[^/]+/$~i', $_SERVER['REQUEST_URI'], $m) ) {
// matches succeeds
}
~
之类的备用分隔符来避免转义每个正斜杠.*
.../type/any-type/
醇>
答案 1 :(得分:2)
您可以匹配[^/]+
:
preg_match('(clothes/(men|women)/type/([^/]+)/?$)', $_SERVER['REQUEST_URI'])