Tiện ích giải mã URL JavaScript tốt nhất là gì? Mã hóa cũng sẽ rất tốt và hoạt động tốt với jQuery là một phần thưởng bổ sung.
Tiện ích giải mã URL JavaScript tốt nhất là gì? Mã hóa cũng sẽ rất tốt và hoạt động tốt với jQuery là một phần thưởng bổ sung.
Câu trả lời:
Tôi cũng đã sử dụng encodeURIComponent () và decodeURIComponent () .
Đây là một chức năng hoàn chỉnh (lấy từ PHPJS ):
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
Dùng cái này
unescape(str);
Tôi không phải là một lập trình viên JS tuyệt vời, đã thử tất cả và điều này thật tuyệt vời!
decodeURIComponent(mystring);
bạn có thể nhận được các tham số được truyền bằng cách sử dụng bit mã này:
//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;
}
Hoặc một lớp lót này để có được các tham số:
location.search.split("your_parameter=")[1]
window.location.search
thay thế.
//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));
Đây là những gì tôi đã sử dụng:
Trong JavaScript:
var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);
var decoded_url = decodeURIComponent(encoded_url);
Trong PHP:
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
Bạn cũng có thể dùng thử trực tuyến tại đây: 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()
là tốt, nhưng bạn không bao giờ muốn sử dụng encodeURIComponent()
trực tiếp. Đây không thoát khỏi nhân vật dành riêng như *
, !
, '
, (
, và )
. Kiểm tra RFC3986 , nơi điều này được xác định, để biết thêm thông tin về điều đó. Tài liệu Mozilla Developer Network cung cấp cả giải thích tốt và giải pháp. Giải trình...
Để nghiêm ngặt hơn trong việc tuân thủ RFC 3986 (dự trữ !, ', (,) Và *), mặc dù các ký tự này không có cách sử dụng phân định URI chính thức, có thể sử dụng một cách an toàn:
Giải pháp...
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
Trong trường hợp bạn không chắc chắn, hãy xem bản demo hoạt động tốt tại JSBin.com . So sánh điều này với một bản demo hoạt động tồi tệ tại JSBin.com bằng cách sử dụng encodeURIComponent()
trực tiếp .
Kết quả mã tốt:
thing%2athing%20thing%21
Kết quả mã xấu từ encodeURIComponent()
:
thing*thing%20thing!
encodeURIComponent
vàdecodeURIComponent
?