Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中PHP的urlencode()?_Php_Javascript_Url_Urlencode - Fatal编程技术网

JavaScript中PHP的urlencode()?

JavaScript中PHP的urlencode()?,php,javascript,url,urlencode,Php,Javascript,Url,Urlencode,我正在寻找类似于PHP中JavaScript中的urlencode()的函数。允许使用jQuery库 基本上,我需要对字符串进行编码,然后使用JavaScript将用户重定向到另一个页面。encodeURIComponent() 如果您正在搜索与PHP等效的JS函数,请查看phpjs.org: 这里您可以使用encodeURIComponent()(经过一些修改)。没有与urlencode()完全匹配的函数,但有一个函数相当于rawurlencode():encodeURIComponent(

我正在寻找类似于PHP中JavaScript中的
urlencode()
的函数。允许使用jQuery库

基本上,我需要对字符串进行编码,然后使用JavaScript将用户重定向到另一个页面。

encodeURIComponent()

如果您正在搜索与PHP等效的JS函数,请查看phpjs.org:


这里您可以使用
encodeURIComponent()
(经过一些修改)。

没有与
urlencode()
完全匹配的函数,但有一个函数相当于
rawurlencode()
encodeURIComponent()

用法:
var encoded=encodeURIComponent(str)

您可以在此处找到参考资料:

尝试从URL编码。 我已经在我的几个案例中对它进行了测试,并且成功了。

来自:

返回一个字符串,其中除-\之外的所有非字母数字字符均为该字符串。 已替换为百分比(%)符号,后跟两个十六进制数字 和编码为加号(+)的空格。它的编码方式与 WWW表单中发布的数据进行编码,编码方式与中相同 应用程序/x-www-form-urlencoded媒体类型。这与»不同 RFC 3986编码(参见rawurlencode()),由于历史原因, 空格编码为加号(+)

发件人::

encodeURIComponent()转义除以下字符以外的所有字符:
没有逃逸:A-Z A-Z 0-9-u.!~*'()

该页面底部附近提供了一个片段,如下所示:

我正在稍微调整提供的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

我的代码是相当于PHP的urlencode(基于PHP的源代码)的JS函数

函数urlencode(str){ 让newStr=''; const len=str.length; for(设i=0;i57)|| (代码>90&&code<97&&code!==95)|| (代码>122)){ newStr+='%'+code.toString(16); } //字母数字字符 否则{ newStr+=c; } } 返回新闻TR; }
这是不一样的。一个例子是
encodeURIComponent()
不编码括号。
%2e_%21_%7e_%2a_%27_%28_%29-%5C-%26-%7C
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;
}