2014-05-11 4 views
1

나는이 http://website.com/clothes/men/type/t-shirts/color/red/size/xl... 같은 URL을 가지고 있고 나는 URL이 http://website.com/clothes/(men or woman)/type/any-typePHP 정규식 일치하는 단어와 중지는

같은 경우 작업을 수행 할 필요가 그래서 만약 다른 값이 있습니다 type/any-type 나는 수행하지 않으려 후 행동.

내 정규식 지금이 바로 preg_match('/clothes\/(men|women)\/type\/(.*)\/?$/', $_SERVER['REQUEST_URI'])

그것은 내가 원하는 경우 일치처럼 보이지만 URL이 특정 키/값 쌍 후 계속 경우에도 일치하는, 그래서 그것은 또한 http://website.com/clothes/men/type/t-shirts/color/red 일치합니다.

그래서 결국 type/anything 쌍만있는 URL 만 일치 시키려면 preg_match()이 필요합니다.

감사합니다.

+0

정말로, 그냥 https://github.com/nikic/FastRoute와 같은 라우터를 사용하십시오. – bwoebi

+0

프로젝트가 거의 완료되었으며 .htaccess로 끝났으며 잘 작동하기 때문에 지금은 붙어 있습니다. . 제 질문은 정규 표현식에 관한 것이지만 어쨌든 고맙습니다. –

+0

그것은 단지 제안이었습니다. 나는 항상 .htaccess 괴물을 두려워했으나 내 대답은 아래를 참조하십시오. – bwoebi

답변

2

[^/]+ :

과 일치 할 수 있습니다.
preg_match('(clothes/(men|women)/type/([^/]+)/?$)', $_SERVER['REQUEST_URI']) 
2

당신은 사용할 수 있습니다 : 당신이 후 일치하지 않는 경우

if (preg_match('~/clothes/(?:wo)?men/type/[^/]+/$~i', $_SERVER['REQUEST_URI'], $m)) { 
    // matches succeeds 
} 
  1. 당신은
  2. 가 결국 .*을 제거 모든 슬래시를 이스케이프 피하기 위해 ~ 같은 다른 구분 기호를 사용할 수 있습니다 .../type/any-type/
+0

포인트 1에 감사드립니다. 언어는 영어가 아니지만 나는'(? : wo)? 남자'물건을 좋아한다. 항상 도움이, 감사합니다 다시 –

+1

희망이 정규식이 나를 위해 알려주지 않으면 내가 그것을 조정할 것입니다. – anubhava

+0

작동하지만 짧은 것이기 때문에 @bwoebi가 게시 한 것과 함께 가기로했습니다. –

관련 문제