有对JS熟悉的吗,帮转换一段代码为PHP的。
<script>
var URLEncode = {
map: {
'0': '0',
'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
'10': 'A',
'11': 'B',
'12': 'C',
'13': 'D',
'14': 'E',
'15': 'F'
},
toHex: function(num) {
var s = [];
while ( num >= 16 ) {
s.unshift( URLEncode.map[num % 16] );
num = Math.floor( num / 16 );
}
s.unshift( URLEncode.map[num] );
return '%' + s.join('');
},
exec: function(url) {
var exp = /^([a-z]+:\/\/)([^/]*)(.*)/;
var a, b, c, len, arr;
arr = url.match(exp);
a = arr[1];
b = arr[2];
c = arr[3];
len = b.length;
for (var i = 0; i < len; i++) {
a += URLEncode.toHex(b.charAt(i).charCodeAt());
}
return a + (c.length ? c : '/');
}
}
var teststr = 'http://baidu.com';
alert('加密前: ' + teststr);
alert('加密后: ' + URLEncode.exec(teststr));
alert('解密后:' + unescape(URLEncode.exec(teststr)));
</script>
var URLEncode = {
map: {
'0': '0',
'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
'10': 'A',
'11': 'B',
'12': 'C',
'13': 'D',
'14': 'E',
'15': 'F'
},
toHex: function(num) {
var s = [];
//十进制数字转化十六进制
while ( num >= 16 ) {
s.unshift( URLEncode.map[num % 16] );
num = Math.floor( num / 16 );
}
s.unshift( URLEncode.map[num] );
return '%' + s.join('');//在前面添加%后返回十六进制值
},
exec: function(url) {
var exp = /^([a-z]+:\/\/)([^/]*)(.*)/;//正则匹配http://和第一个/nnn之间的网址
//http://baidu.com/abc也会返回baidu.com
var a, b, c, len, arr;
arr = url.match(exp);//拆分网址
a = arr[1];
b = arr[2];
c = arr[3];
alert(a);
alert(b);
alert(c);
len = b.length;
for (var i = 0; i < len; i++) {
alert(b.charAt(i).charCodeAt());
a += URLEncode.toHex(b.charAt(i).charCodeAt());//查询地址的每个字母的unicode值,然后转化为十六进制
}
return a + (c.length ? c : '/');
}
}
var teststr = 'http://baidu.com';
alert('加密前: ' + teststr);
alert('加密后: ' + URLEncode.exec(teststr));
alert('解密后:' + unescape(URLEncode.exec(teststr)));//unescape()方法是java方法,用于解密十六进制编码的字符串