我正在寻找类似的功能urlencode()从PHP只是在JavaScript。jQuery库是允许的。基本上,我需要对字符串进行编码,然后使用JavaScript将用户重定向到另一个页面。
urlencode()
n1bvdmb61#
出发地:https://www.php.net/manual/en/function.urlencode.php返回一个字符串,其中除-_.外的所有非字母数字字符都已替换为百分比(%)符号,后跟两个十六进制数字和空格,编码为加号(+)符号。它的编码方式与来自WWW表单的发布数据的编码方式相同,这与application/x-www-form-urlencoded媒体类型中的方式相同。这与» RFC 3986编码不同(参见rawurlencode()),因为历史原因,空格被编码为加号(+)From:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent:encodeURIComponent()转义所有字符,除了:未逃脱:A-Z a-z 0-9 - _ .!~ * '()在该页面的底部附近提供了一个片段,看起来像这样:
function fixedEncodeURIComponent(str) { return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { return '%' + c.charCodeAt(0).toString(16); }); }
我稍微调整了提供的javascript片段,以包含更多的字符。我的代码:
function urlEncodeLikePHP(str) { return encodeURIComponent(str).replace(/[.!~*'()]/g, function(c) { return '%' + c.charCodeAt(0).toString(16); }); }
使用方法:
urlEncodeLikePHP("._!_~_*_'_(_)-\\-&-|-/"); // effectively: "._!_~_*_'_(_)-\-&-|-/"
编码输出:
%2e_%21_%7e_%2a_%27_%28_%29-%5C-%26-%7C
cyvaqqii2#
编码URI组件()http://www.w3schools.com/jsref/jsref_encodeURIComponent.asp
pdkcd3nj3#
试试http://locutus.io/php/url/urlencode/中的urlencode,我已经在几个案例中测试过了,效果很好。
ewm0tg9j4#
没有一个函数与urlencode()非常匹配,但有一个函数与rawurlencode()非常等效:encodeURIComponent() .用法:var encoded = encodeURIComponent(str);你可以在这里找到一个参考:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent
rawurlencode()
encodeURIComponent()
var encoded = encodeURIComponent(str);
zc0qhyus5#
我的代码是等效于PHP的urlencode的JS函数(基于PHP的源代码)。
function urlencode(str) { let newStr = ''; const len = str.length; for (let i = 0; i < len; i++) { let c = str.charAt(i); let code = str.charCodeAt(i); // Spaces if (c === ' ') { newStr += '+'; } // Non-alphanumeric characters except "-", "_", and "." else if ((code < 48 && code !== 45 && code !== 46) || (code < 65 && code > 57) || (code > 90 && code < 97 && code !== 95) || (code > 122)) { newStr += '%' + code.toString(16); } // Alphanumeric characters else { newStr += c; } } return newStr; }
JS函数相当于PHP的urldecode。
function urldecode(str) { let newStr = ''; const len = str.length; for (let i = 0; i < len; i++) { let c = str.charAt(i); if (c === '+') { newStr += ' '; } else if (c === '%') { const hex = str.substr(i + 1, 2); const code = parseInt(hex, 16); newStr += String.fromCharCode(code); i += 2; } else { newStr += c; } } return newStr; }
juud5qan6#
如果phpjs.org你正在寻找一个与PHP等价的JS函数,请访问www.example.com:http://phpjs.org/functions/urlencode:573这里可以使用encodeURIComponent()(经过一些修改)。
6条答案
按热度按时间n1bvdmb61#
出发地:https://www.php.net/manual/en/function.urlencode.php
返回一个字符串,其中除-_.外的所有非字母数字字符都已替换为百分比(%)符号,后跟两个十六进制数字和空格,编码为加号(+)符号。它的编码方式与来自WWW表单的发布数据的编码方式相同,这与application/x-www-form-urlencoded媒体类型中的方式相同。这与» RFC 3986编码不同(参见rawurlencode()),因为历史原因,空格被编码为加号(+)
From:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent:
encodeURIComponent()转义所有字符,除了:
未逃脱:A-Z a-z 0-9 - _ .!~ * '()
在该页面的底部附近提供了一个片段,看起来像这样:
我稍微调整了提供的javascript片段,以包含更多的字符。
我的代码:
使用方法:
编码输出:
cyvaqqii2#
编码URI组件()
http://www.w3schools.com/jsref/jsref_encodeURIComponent.asp
pdkcd3nj3#
试试http://locutus.io/php/url/urlencode/中的urlencode,我已经在几个案例中测试过了,效果很好。
ewm0tg9j4#
没有一个函数与
urlencode()
非常匹配,但有一个函数与rawurlencode()
非常等效:encodeURIComponent()
.用法:
var encoded = encodeURIComponent(str);
你可以在这里找到一个参考:
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent
zc0qhyus5#
我的代码是等效于PHP的urlencode的JS函数(基于PHP的源代码)。
JS函数相当于PHP的urldecode。
juud5qan6#
如果phpjs.org你正在寻找一个与PHP等价的JS函数,请访问www.example.com:
http://phpjs.org/functions/urlencode:573
这里可以使用
encodeURIComponent()
(经过一些修改)。