2010-06-16 3 views
0

다음 함수를 사용하여 URL 매개 변수를 가져 왔습니다.url 부분의 값을 가져 오거나 값이없는 경우 true를 반환하는 URL 매개 변수 함수를 가져 옵니까?

function gup(name, url) { 
    name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); 
    var results = new RegExp('[\\?&]'+name+'=?([^&#]*)').exec(url || window.location.href); 
    return results == null ? null : results[1]; 
} 

매개 변수에 값이있는 경우에만 작동합니다.

gup('a', 'http://example.com/page.php?a=1&b=2'); 

1을 반환하지만

gup('a', 'http://example.com/page.php?a&b=2'); 

을 시도하는 경우는 null을 반환합니다. 매개 변수 "a"가 그 URL에 존재하기 때문에 true를 반환하기를 원합니다. 아직 값이 없으며 gup()가 true를 반환해야합니다. 이 재 작성에 약간의 도움을받을 수 있을까요? 나는 정규 표현식에 그렇게 좋지 않다.

답변

0

두 번째 예에서는 실제로는 null을 반환하지 않고 빈 문자열을 반환합니다.

빈 문자열은 위변조이고 부울 컨텍스트에서는 false으로 강제 변환되므로 3 진수의 두 번째 분기에서 사용할 수 있습니다. 이

당신이 뭔가 (results[1]에) 일치 된 것을 알고, 당신이 일치하는 경우에만 true를 반환 할 수 있습니다 falsy (빈 문자열) :

function gup(name, url) { 
    name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); 
    var results = new RegExp('[?&]'+name+'=?([^&#]*)').exec(url || window.location.href); 
    return results == null ? null : results[1] || true; 
} 

gup('a', 'http://example.com/page.php?a&b=2'); // true 
gup('a', 'http://example.com/page.php?a=1&b=2'); // "1" 
gup('a', 'http://example.com/page.php?b=2');  // null 
+0

감사합니다. 너무 단순하다는 것을 깨닫지 못했습니다. – fent

-1

때 PHP로 페이지가로드, 또는 선택한 서버 측 언어는 숨겨진 입력을 foreach GET 매개 변수로 출력합니다.

foreach($_GET as $Name => $Value) { 
    echo '<input type="hidden" id="'.$Name.'" value="'.$Value.'">'; 
} 

그러면 javascript를 사용하면 숨겨진 입력 값을 얻을 수 있습니다.이 값은 url 매개 변수의 값을 제공합니다.

var parameterValue = document.getElementById('parameter').value; 
관련 문제