js 实现 php urlencode_js实现php函数urlencode

本文探讨了如何在JavaScript中实现与PHP的urlencode函数相同的功能。主要对比了JS的escape, encodeURI, encodeURIComponent与PHP的urlencode和rawurlencode的编码差异。通过提供一个具体的JS函数实现,详细解释了代码逻辑,确保在处理非字母数字字符和空格时遵循相同的编码规则。
摘要由CSDN通过智能技术生成

js实现php函数urlencode

本文介绍了php函数urlencode的js实现方法并比较js和php各编码函数的区别。

通常form表单的enctype类型为application/x-www-form-urlencoded, 当表单提交后,提交的数据自动被编码,规则为" 除了-_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。", php的urlencode函数与其功能相同。

js编码方法:escape, encodeURI, encodeURIComponent。

escape可以对大多数符号进行编码,但是对unicode字符无效。

php编码方法:urlencode, rawurlencode, htmlentities。

urlencode和rawurlencode唯一的区别是对空格的编码方式不同,rawurlencode遵循RFC 1738编码将空格转换为%20。

如何用js实现php的urlencode功能,网上流传着一段js和vbscript混写的代码,通用性不好,经测试与urlencode相同。

function URLEncode (clearString) {

2 var output = '';

3 var x = 0;

4 clearString = clearString.toString();

5 var regex = /(^[a-zA-Z0-9-_.]*)/;

6 while (x < clearString.length) {

7 var match = regex.exec(clearString.substr(x));

8 if (match != null && match.length > 1 && match[1] != '') {

9 output += match[1];

10 x += match[1].length;

11 } else {

12 if (clearString.substr(x, 1) == ' ') {

13 //原文在此用clearString[x] == ' ' 做判断, 但ie不支持把字符串当作数组来访问,

14 //修改后两种浏览器都可兼容

15 output += '+';

16 }

17 else {

18 var charCode = clearString.charCodeAt(x);

19 var hexVal = charCode.toString(16);

20 output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();

21 }

22 x++;

23 }

24 }

25 return output;

26 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值