Apa utilitas decode URL JavaScript terbaik? Pengkodean juga akan menyenangkan dan bekerja dengan baik dengan jQuery adalah bonus tambahan.
Apa utilitas decode URL JavaScript terbaik? Pengkodean juga akan menyenangkan dan bekerja dengan baik dengan jQuery adalah bonus tambahan.
Jawaban:
Saya telah menggunakan encodeURIComponent () dan decodeURIComponent () juga.
Berikut ini adalah fungsi lengkap (diambil dari PHPJS ):
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
Gunakan ini
unescape(str);
Saya bukan programmer JS hebat, sudah mencoba semua, dan ini berhasil luar biasa!
decodeURIComponent(mystring);
Anda dapat melewati parameter dengan menggunakan sedikit kode ini:
//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;
}
Atau ini satu-liner untuk mendapatkan parameter:
location.search.split("your_parameter=")[1]
window.location.search
sebagai gantinya.
//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));
Jika Anda bertanggung jawab untuk menyandikan data dalam PHP menggunakan urlencode, rawurlencode PHP berfungsi dengan komponen decodeURIC JavaScript dari JavaScript tanpa harus mengganti karakter +.
Inilah yang saya gunakan:
Dalam JavaScript:
var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);
var decoded_url = decodeURIComponent(encoded_url);
Dalam PHP:
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
Anda juga dapat mencobanya online di sini: 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()
baik-baik saja, tetapi Anda tidak ingin atau tidak encodeURIComponent()
langsung digunakan . Ini gagal untuk melarikan diri reserved karakter seperti *
, !
, '
, (
, dan )
. Lihat RFC3986 , di mana ini didefinisikan, untuk info lebih lanjut tentang itu. Dokumentasi Jaringan Pengembang Mozilla memberikan penjelasan dan solusi yang baik. Penjelasan...
Agar lebih ketat dalam mematuhi RFC 3986 (yang mencadangkan!, ', (,), Dan *), meskipun karakter ini tidak memiliki penggunaan pembatas URI yang diformalkan, hal berikut dapat digunakan dengan aman:
Larutan...
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
Jika Anda tidak yakin, lihat demo yang bagus dan berfungsi di JSBin.com . Bandingkan ini dengan demo yang buruk dan berfungsi di JSBin.com menggunakan encodeURIComponent()
secara langsung .
Hasil kode yang bagus:
thing%2athing%20thing%21
Kode buruk dihasilkan dari encodeURIComponent()
:
thing*thing%20thing!
encodeURIComponent
dandecodeURIComponent
?