通过Javascript对网址进行编码

时间:2012-11-25 13:49:11

标签: php javascript url encode encodeuricomponent

朋友,我目前正在使用以下functionencode我的数据并通过GET方法发送...我正在使用ajax发送和{{ 1}}接收他们......

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() ...

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

我只将这个问题放在 学习目的 ... no jQuery please ...

2 个答案:

答案 0 :(得分:0)

使用escape() instead of encodeURIComponent将至少消除您正在使用的部分replace()。 E.g:

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');
}

答案 1 :(得分:0)

如果要将JS的GET请求发送给PHP,则应使用

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

如果您必须在PHP中对内容进行网址编码,请使用urlencode(),保证与相应的urldecode()兼容。

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