I have been working on an encoding/decoding project for my site. I want to offer my users the choice between base64 and hex encoding/decoding. In PHP, both base64 encode/decode work fine and bin2hex works fine as well. But, when I try to use hex2bin in PHP, I get an internal server error. I've check my error and it says PHP Fatal error: Call to undefined function hex2bin().
I recently did a PHP to JavaScript conversion of both base64 and hex encoding/decoding. I have the Javascript for the hex below. I tried to convert it back to PHP but I'm at a loss on the 10th line with charCodeAt and toString. I was wondering if anybody might be able to take this code and do a Javascript to PHP conversion for me. What I mean to say is that I need a way to do bin2hex() and hex2bin() in PHP without having to actually use these two functions.
Code:
var Hex = {
// PHP to JavaScript bin2hex
encode : function(input) {
// Replace tab characters with spaces and end-of-line markers with '~EOL'
input = _str_replace([new RegExp("\t","g"), new RegExp("\n","g")], [" ", "~EOL"], input);
var r = '';
var i = 0;
var h;
while(i < input.length) {
h = input.charCodeAt(i++).toString(16);
while(h.length < 2) {
h = h;
}
r += h;
}
return r;
},
// PHP to JavaScript hex2bin
decode : function(input) {
var r = '';
for(var i = 0; i < input.length; i += 2) {
r += unescape('%'+input.substr(i, 2));
}
// Change back end-of-line markers
r = _str_replace(new RegExp("~EOL", "g"), "\n", r);
return r;
},
is_hex:function(str) {
var check;
if(str.length%2 != 0) { return false; }
for(var i = 0; i < str.length; i++) {
check = str[i].charCodeAt();
// 0 9 a f A F
if((check < 48 || check > 57) && (check < 97 || check > 102) && (check < 65 || check > 70)) {
return false;
}
}
return true;
}
};
If it looks like it can't be done, does anybody know of any other encoding/decoding functions in PHP that I can use instead of the hex functions.
12-06-2012, 05:43 PM
stevekapaun01
I think I got a pretty good substitue here, it's not an exact conversion but it works fine for me.