2014-09-23 2 views
0

여기에 내가 구문 분석하는 데 필요한 URI 경로입니다 :정규식은

탐탐/SAM/베타 - 숲 %의 E2 % 84 % A2/제품-A 내가 필요

슬래시로 끝나는 처음 세 구성 요소 만 추출합니다.

preg_match("/^([\w\/ %\.-]*){3}/", $input_line, $output_array); 

이것은 거의 내가 원하는 것을 얻지 만 '% E2 % 84 % A2'를 제외합니다. 나는 http://www.phpliveregex.com/에 일을 재 배열했지만 아무 소용이 없습니다.

전체 URL을 구문 분석하려고하면 mysite.com/tom/sam/beta-forest%E2%84%A2/product-a라고 말하면이 정규식으로 원하는 것을 얻을 수 있습니다.

는 preg_match ("/^(https?://)?([\da-z.-]+).([az.]{2,6})([/\w %. -] *) {3} // ", $ path, $ output_array);

URI 경로를 구문 분석해야하지만 % 기호를 포함해야합니다. 한숨 ..

편집 :

내 예상 출력은 다음과 같습니다

tom-tom/sam/beta-forest%E2%84%A2/ 
+0

예상되는 출력은 무엇입니까? –

+1

아마도 parse_url이 유용 할 수 있습니다. http://mx1.php.net/manual/es/function.parse-url.php –

+0

@Alx http://regex101.com/r/rD4sO4/2 –

답변

0

당신은 처음 세 개의 구성 요소를 얻기 위해 시작 패턴을 포함해야한다.

preg_match("/^(?:[^\/]*\/){3}/", $input_line, $output_array); 

DEMO

+0

탈출을 피할 수 있습니다. 다른 구분 기호를 사용하여 ... – hwnd

+0

그래,하지만 전혀 문제가되지 않습니다. –

+0

사실, 그냥 못 생기고 엉망이지만 다시 사용자 환경 설정. – hwnd

0

에 대해 어떻게 :

preg_match("~(?:[^/]+/){3}~", $input_line, $output_array);