0

朋友们,我目前正在使用下面functionencode数据并通过GET方法发送它们......我正在使用ajax发送和php接收它们......

function urlencode(a){
     a=encodeURIComponent(a);
     a=a.replace(/\\/g,'%5C');
     a=a.replace(/!/g,'%21');
     a=a.replace(/'/g,'%27');
     a=a.replace(/\(/g,'%28');
     a=a.replace(/\)/g,'%29');
     a=a.replace(/\*/g,'%2A');
     a=a.replace(/~/g,'%7E');
     a=a.replace(/%20/g,'+');
     a=a.replace(/%26amp%3B/gi,'%26');
     a=a.replace(/%26lt%3B/gi,'%3C');
     a=a.replace(/%26gt%3B/gi,'%3E');
     a=a.replace(/%26nbsp%3B/gi,'%C2%A0');
     return a;
}

在传递字符串通过后encodeURIComponent(),我使用了额外的replace()方法,以便函数将我的链接的字符串编码为类似于php...

现在我的问题是有没有人知道任何更短或更简单的替代方法来做同样的事情......

我提出这个问题只是为了学习目的......请不要使用jQuery......

4

2 回答 2

0

使用escape()代替encodeURIComponent将至少消除您正在使用的一些替换()。例如:

function urlencode(a){
 return escape(a);
   .replace(/\*/g,'%2A');
   .replace(/%20/g,'+');
   .replace(/%26amp%3B/gi,'%26');
   .replace(/%26lt%3B/gi,'%3C');
   .replace(/%26gt%3B/gi,'%3E');
   .replace(/%26nbsp%3B/gi,'%C2%A0');
}
于 2012-11-25T14:22:59.690 回答
0

如果你从 JS 向 PHP 发送 GET 请求,你应该使用

  • encodeURIComponent(),对于每个参数,在 javascript 端
  • PHP 端什么都没有(因为$_GET已经是urldecode()d;请阅读其链接文档中的注释部分)

如果你必须在 PHP 中对东西进行 url-encode,请使用urlencode(),它保证与相应的urldecode().

如果您想“自己”学习如何做,请阅读相应库中的源代码,以确保您不会错过任何场景……重新实现库函数通常是个坏主意。

于 2012-11-25T15:33:39.943 回答