Skip to content

Instantly share code, notes, and snippets.

@takunagai
Last active August 29, 2015 14:02
Show Gist options
  • Save takunagai/5eb950ce0176fe287da1 to your computer and use it in GitHub Desktop.
Save takunagai/5eb950ce0176fe287da1 to your computer and use it in GitHub Desktop.
URLからクエリを取得し、オブジェクトに格納
/**
* URLからクエリを取得し、オブジェクトに格納
*
* @param {String} url クエリ付きのURL
* @param {Boolian} setEmptyKeys 空のパラメーターを表示するか(省略でfalse)
* https://gist.github.com/oreo3/76595108a85ae4d6883a
*/
var urlQueryToHash = function (url,setEmptyKeys) {
var paramsHash = {};//データを格納するハッシュ
var queryString = url.replace(/^[^\?]+\??/, '');//URLの?以降を格納
//クエリがなければ空オブジェクトを返す、クエリがあれば処理
if (!queryString){ return paramsHash; }
else {
var pairs = queryString.split(/[;&]/);
for (var i=0, len=pairs.length ; i < len ; i++) {
var pair = pairs[i].split('=');
if(!pair || pair.length !== 2){ continue; }//A=Bでなければ無視して次のパラメータを処理
if(setEmptyKeys === true){ if(!pair[1]){ continue; } }//第二匹数が真なら、値が空のパラメータは処理飛ばす
var key = decodeURIComponent(pair[0]);
var val = decodeURIComponent(pair[1]);
paramsHash[key] = val.replace(/\+/g, ' ');//値の + をスペースに変換、ハッシュに格納
}
return paramsHash;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment