컨트롤러의 MVC 작업과 다른 URL을 일치 시키려고합니다.정규 표현식이 예상 URL과 일치하지 않습니다.
/products/22-test/25-test2
내가 (으로, preg_match_all를 통해) 다음과 같은 결과를 얻기 위해 기다리고 있었다 : 내가이 일치 할 때
#^/products((/([0-9]+)-([0-9a-z\_]+))*(/(index\.(html|pdf|xml|json))?)?)?$#i
: 여기
내가 테스트하고있어 현재의 표현이다array(5) {
[0]=>
string(26) "/products/22-test/25-test2"
[1]=>
string(17) "/22-test"
[2]=>
string(2) "22"
[3]=>
string(5) "test"
[4]=>
string(17) "/25-test"
[5]=>
string(2) "25"
[6]=>
string(5) "test2"
}
하지만 그 대신 내가 얻을
array(5) {
[0]=>
string(26) "/products/22-test/25-test2"
[1]=>
string(17) "/22-test/25-test2"
[2]=>
string(9) "/25-test2"
[3]=>
string(2) "25"
[4]=>
string(5) "test2"
}
UPDATE
문제는 내가 사용하고 난 가능한 한 내 문제가 명확하게 단지 있도록 개별 요소로 변환 카테고리 목록 ...
을받지 못했습니다이다 (/([0-9]+)-([0-9a-z\_]+))*
은 많은 범주 식별자를 구문 분석 된 항목으로 변환하려고 시도합니다. 그 이유는 내가 (...)*
을 사용했기 때문에 어떤 수의 카테고리도 일치해야하며 각각 일치해야합니다.
업데이트 2
그것은, 내가 (...)*
대신 나에게 하나 개의 큰 목록을주는 여러 번 구문 분석 것이라고 내가 몇 번을 같은 범주 식별자를 지원하는 정규 표현식을 업데이트 할 경우,이 구문 분석됩니다 것으로 기대했다 보인다 카테고리 식별자의.
#^/products((/([0-9]+)-([0-9a-z\_]+))?(/([0-9]+)-([0-9a-z\_]+))?(/([0-9]+)-([0-9a-z\_]+))?(/([0-9]+)-([0-9a-z\_]+))?(/([0-9]+)-([0-9a-z\_]+))?(/(index\.(html|pdf|xml|json))?)?)?$#i
을하지만 카테고리 선택 여러 번 반복 저를 강제로 :
는 예를 들어,이 잘 작동합니다. 따라서 카탈로그에 X 카테고리 이상을두기로 결정한 고객이있는 경우 차단되고 URL이 올바르게 해결되지 않습니다.
지원 방법이 있습니까?
'# ^/제품 ((/ ([0-9] +) - ([0-9a-z \ _ \ -] +)) * (/ (색인 \ (html | pdf | xml | json))?)?)?$ # 나는 그것을 시도한다 – RobertPitt
아니, 나는 그것을 어떻게해서든지 시도했지만 \ wouldnt는 그것을 바꾼다. 문제는 내가 개별 목록으로 번역 된 카테고리 목록을 얻지 못한다는 것입니다. –
망할 것 같았습니다 ... 나는 여러 번 카테고리 선택기를 반복해야합니다. 그래서 나는 내 고객이 결코 X 카테고리 이상을 사용하지 않거나 일을 멈추지 않기를 바랄뿐입니다 ... 다른 방법이 있습니까? –