다음 코드 조각에 문제가 있습니다 : pastebin. 예 :PHP 정규식 vsprintf addign 파일 확장자 슬래시
/^\/index\.php\/index\/home\/(\w+)$/
.php 확장 앞에 슬래시가 추가됩니다. 어떤 아이디어로 그것을 고치는 법?
다음 코드 조각에 문제가 있습니다 : pastebin. 예 :PHP 정규식 vsprintf addign 파일 확장자 슬래시
/^\/index\.php\/index\/home\/(\w+)$/
.php 확장 앞에 슬래시가 추가됩니다. 어떤 아이디어로 그것을 고치는 법?
글쎄, 그 예제를 uri로 전달하면 10 행에 당신이 preg_quote($uri)
입니다. 그것이 이유가되어야합니다. 도트 (.)가 Regex에서 의미를 가지므로이 함수는이를 이스케이프 처리합니다.
하지만 당신이 그 슬래시를 제거하면 정규식이 도트 (점을 포함하여) 대신 문자와 일치하므로 믿기를 바랍니다. 따라서 이들 중 어떤 것도 유효합니다 :
indexBphp
index-php
indexmphp
index.php
etc...
이 위치의 문자는 Regex의 의미로 모든 문자와 일치합니다. 그래서 저는 잘못된 것은 아무것도 없다고 생각합니다. 그렇죠? 당신은 여전히 두 개의 부분으로 정규식을 구축 할 수있다 그 점을하려면이 문제를 해결하는
한 가지 방법은 :
$urlDivided = explode('.php', $url);
$this->finalRegex = preg_quote($urlDivided[0]) . '.php' . preg_quote($urlDivided[1]);
물론, 위의 방법은 항상 '.PHP'이 있다고 가정 확장 URL. 정신 건강 검사를해야합니다.
해결책은 URL에서 index.php를 항상 제거하고 싶습니다 :-) 또는 전체 코드를 다시 생각해보십시오. – Bogdan
제 3 자 사이트가 아닌 여기에 코드를 게시하십시오. – deceze