2010-02-07 3 views
2

일치하는 URI에 대한 정규식이 있습니다. 예를 들어,PHP : 정규 표현식을 예제와 일치 시키려면 어떻게해야합니까?

내가 exmample를 들어, 라우팅에 사용
preg_match("/^my\/uri\//i", "my/uri/whatever"); 

"http://www.mywebsite.com/my/uri/page.html"위 (물론 제거 프로토콜/호스트와) 일치합니다.

일치하는 가장 일반적인 URI로 정규 표현식을 평가할 수있는 방법이 있습니까? 예를 들어,

"내/URI /"

+0

그냥 현재 정규 표현식을 ""/ "/" "my/uri"와 일치 시키길 원하십니까? –

+1

정말 흥미로운 질문입니다. '/\w\b.+\b\s/'와 같은 것을 처리하는 것은 상당히 어려울 것입니다 (하나의 해결책 : 'a'). –

+0

정규식을 리버스 엔지니어링하여 가장 단순화 된 양식으로 바꾸고 싶습니다. – Petah

답변

1

나는 당신이 실제로 원하는 것을 이해하지 못했습니다.

이 코드는 당신이 필요로 할 수 있습니다

$regex = '/^my\/uri\//i'; 
$general_uri = str_replace('\\', '', preg_replace('/^\/\^(.*)\/i?$/', '$1', $regex)); 

그러나 코드보다 복잡한 정규 표현식에 작동하지 않습니다 :

$general_uri = 'my/uri/'; 
$regex = '/^' . preg_quote($general_uri) . '/i'; 

위 코드의 반대합니다

.

+0

그 간단한 정규식에서 작동합니다. 감사 – Petah

0

어쩌면 당신은 상황에 트위스트를 제공 할 수 있습니다이 막 다른 사람으로 당신을 인도하는 원래의 문제를 말할 수 있는지.

나는 자신을 라우팅 알고리즘으로 만들었으며 '/'를 사용하고 폭발 시켰습니다. Magento 또는 Zend Framework과 같이 경로 컨트롤러 또는 라우터를 등록하고 연결하는 것과 같이 아주 멋지게 작동합니다.

원래 문제는 PHP로 정규 표현식 엔진을 작성할 필요없이 해결할 수 있습니다.

관련 문제