2009-04-07 10 views
3

빈 href 쿼리 매개 변수 이름 만 가져 오는 함수가 필요하므로 나중에 다른 배열의 값으로 바꿀 수 있습니다.빈 href 쿼리 매개 변수를 가져 오는 방법은 무엇입니까?

/** 
* getEmptyQueryParams(URL) 
* Input: URL with href params 
* Returns an array containing all empty href query parameters. 
*/ 
function getEmptyQueryParams(URL) 
{ 

    var params = new Array(); 
    var non_empty_params = new Array(); 
    var regex = /[\?&]([^=]+)=/g; // gets all query params 
    var regex2 = /[\?&]([a-zA-Z_]+)=[\w]/g; // gets non empty query params 

    while((results = regex.exec(URL)) != null) 
    { 
     params.push(results[1]); 
    } 
    while((results = regex2.exec(URL)) != null) 
    { 
     non_empty_params.push(results[1]); 
    } 
    while(non_empty_params.length > 0) 
    { 
     for(y=0;y < params.length;y++) 
     { 
      if(params[y] == non_empty_params[0]) 
      { 
       params.splice(y,1); 
      } 
     } 
     non_empty_params.shift(); 
    } 
    return params; 
} 

그것은 작동하지만, 지옥으로 추한 모습 ... 그것을 할 수있는 더 좋은 방법이 있나요 : 여기, 정규 표현식에서 실패의 시간 후에 난에 의존 무엇? 어떤 도움을 주셔서 감사합니다.

답변

4

난 그냥이 오페라와 크롬, 두 브라우저에서 작동 내가 지금 열려있는 것을 시험 :

function getEmptyQueryParams(URL) 
{ 
    var params = new Array(); 
    var regex = /[\?&]([^=]+)=(?=$|&)/g; // gets non empty query params 
    while((results = regex.exec(URL)) != null) 
    { 
     params.push(results[1]); 
    } 

    return params; 
} 
0

나는 공백과 채워진 매개 변수와 일치하는 하나의 정규식으로 그렇게 할 수 있다고 생각한다.

var regex = /[\?&]([a-zA-Z_]+)=([\w]*)/g; 

while((results = regex.exec(URL)) != null) 
{ 
    if (results[2] == '') 
     params.push(results[1]); 
} 

물론 테스트해야합니다.

0
 
$parsedUrl = parse_url($url); 
$query = $parsedUrl['query']; 
$params = array(); 
parse_str($query, $params); 

$emptyParamNames = array(); 
foreach ($params as $k=>$v) { 
    if ($v === "") 
     $emptyParamNames[] = $k; 
} 

편집 :

ㅎ이 ... 이것은 어떤 이유로 PHP 태그 생각했다.

음, 어쩌면 누군가 언젠가 혜택 :

0
function get_url_params($url) { 
    $out = array(); 
    $parse = parse_url($url, PHP_URL_QUERY); 
    if($parse) { 
     foreach(explode('&', $parse) as $param) { 
      $elems = explode('=', $param, 2); 
      $out[$elems[0]] = $elems[1]; 
     } 
    } 
    return $out; 
} 

function get_empty_url_params($url) { 
    $out = array(); 
    foreach(get_url_params($url) as $key => $value) 
     if(empty($value)) 
      $out[] = $key; 
    return $out; 
} 
+0

이것은 사실입니다 자바 스크립트 질문. 하지만 걱정하지 마십시오. 실수 한 사람 만이 아닙니다. P –

+0

D' oh. 재미 있어요. – chaos

관련 문제