最高のJavaScript URLデコードユーティリティとは何ですか?エンコーディングもいいでしょう。jQueryでうまく機能することは、追加のボーナスです。
最高のJavaScript URLデコードユーティリティとは何ですか?エンコーディングもいいでしょう。jQueryでうまく機能することは、追加のボーナスです。
回答:
私が使ってきたencodeURIComponentで()とは、decodeURIComponent()を過ぎます。
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
decodeURIComponent(mystring);
次のコードを使用して、渡されたパラメーターを取得できます。
//parse URL to get values: var i = getUrlVars()["i"];
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
または、パラメータを取得する次のワンライナー:
location.search.split("your_parameter=")[1]
window.location.search
代わりに使用する必要があります。
//How decodeURIComponent Works
function proURIDecoder(val)
{
val=val.replace(/\+/g, '%20');
var str=val.split("%");
var cval=str[0];
for (var i=1;i<str.length;i++)
{
cval+=String.fromCharCode(parseInt(str[i].substring(0,2),16))+str[i].substring(2);
}
return cval;
}
document.write(proURIDecoder(window.location.href));
これが私が使ったものです:
JavaScriptの場合:
var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);
var decoded_url = decodeURIComponent(encoded_url);
PHPの場合:
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
こちらからオンラインで試すこともできます:http : //www.mynewsfeed.x10.mx/articles/index.php?id=17
var uri = "my test.asp?name=ståle&car=saab";
console.log(encodeURI(uri));
decodeURIComponent()
大丈夫ですが、encodeURIComponent()
直接使用したくないです。これは、のような予約文字をエスケープするために失敗した*
、!
、'
、(
、と)
。詳細については、これが定義されているRFC3986を確認してください。Mozilla Developer Networkのドキュメントには、優れた説明と解決策の両方が記載されています。説明...
RFC 3986(!、 '、(、)、および*を予約する)を厳守するために、これらの文字に正式なURI区切りの使用法がない場合でも、以下を安全に使用できます。
解決...
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
わからない場合は、JSBin.comで優れた実用的なデモをご覧ください。これを、直接使用encodeURIComponent()
するJSBin.comの不良で動作するデモと比較してください。
良いコード結果:
thing%2athing%20thing%21
不正なコードの結果encodeURIComponent()
:
thing*thing%20thing!
encodeURIComponent
しましたdecodeURIComponent
か?