2012-02-12 6 views
0
나는 URL 문자열에서 다음 매개 변수를 추출하는 데 사용한다 무엇 REGEX

에서 추출 매개 변수 : 나는 기본적으로이 문자열에서 a 매개 변수의 값을 얻으려면REGEX : URL

/?c=135&a=1341 

.

감사합니다, 당신은의 값을 추출 할, 값이 많은 자리 하나 구성된 경우

+0

이 url에는 두 개의 매개 변수가 있습니다. 어느 쪽이 원하는거야? – bmargulies

+0

내 질문에 지적한대로, 나는'a '값을 추출하려고합니다. 나는 이미 그것을 풀었다. 대답 형식'bunting'을 보자. –

답변

1

는이 정규식 작동합니다 :

preg_match("/a=(\\d{1,})/ui", $_SERVER['REQUEST_URI'], $matches) 

그런 다음 a 값을 표시 $matches[1]를 사용

+0

나는이 일을 할 수 없었다. 그러나 나는 다음 해결책을 발견 할 수 있었다 :'preg_match ("/ \? c = (\ w +) \ & a = (\ w +)/i ", $ _SERVER [ 'REQUEST_URI'], $ matches); 도움을 주셔서 감사합니다 ... –

+0

물론 PHP에서는 위의 내용이됩니다 : preg_match ("/ a = (\\ d {1,})/ui ", $ searchText) –

+0

완료. 이 작동합니다. 그래, 내가 PHP를 사용하기 전에 그것을 지적 했어야했다. 모든 것이 잘 작동합니다 ... t –

1

나는 당신이 제안한 약간 더 일반적인 질문에 대답하려고합니다. 접두어를 사용하여 URI 요청 문자열에서 특정 매개 변수를 제거하려고합니다. 그리고이 경우 mod_rewrite 엔진을 사용하여 .htaccess 파일에이를 구현할 수 있습니다.

쿼리 매개 변수 a = XXX가 어디에 있는지 반드시 알 필요가 없으므로 규칙이 다소 복잡하므로 a가 먼저 있고 a가 후속 매개 변수 인 경우 다른 정규식이 필요합니다. 당신은 ((?=a=)regexp1|regexp2)하여이 작업을 수행 그래서 여기있다 :

RewriteEngine on 
RewriteBase \ 
RewriteCond %{QUERY_STRING} ^(?(?=a=)a=[^&]*&?(.*)|(.*)&a=[^&]*(&.*)?) 
RewriteRule ^.*    $0?%1%2%3      [L] 

A가 처음 % 1 그렇지 않으면 % 2 % 3 북 엔드가 (% 3이 비어있을 수 있습니다) 나머지를 포함합니다.

특정 스크립트에 대해이 작업을 수행하려면 regexp ^.* 규칙을 더 구체적인 스크립트로 바꿉니다.

즐기기 :-)

+0

동일한 정규 표현식은'preg_match()'에서 작동하지만'$ _GET'을 사용하지 않는 이유는 무엇입니까 ??? – TerryE

+0

나는 .htaccess에서 멀리 떨어져있어 보았습니다. 전에 시도했지만 작동하지 않았습니다 ... 어쩌면 내 시스템에 문제가있을 수 있습니다. 나는 체크 할 것이다 ... –

+0

나는 아직도 $ _SERVER [ 'REQUEST_URI']를 편집하고 왜'$ _GET' :-를 사용하지 않는지 내 Q를 피했음을 주목한다. – TerryE