UNPKG

phpjs

Version:

php.js offers community built php functions in javascript

101 lines (83 loc) 3.11 kB
--- layout: page title: "JavaScript base64_decode function" comments: true sharing: true footer: true alias: - /functions/view/base64_decode:357 - /functions/view/base64_decode - /functions/view/357 - /functions/base64_decode:357 - /functions/357 --- <!-- Generated by Rakefile:build --> A JavaScript equivalent of PHP's base64_decode {% codeblock url/base64_decode.js lang:js https://raw.github.com/kvz/phpjs/master/functions/url/base64_decode.js raw on github %} function base64_decode (data) { // From: http://phpjs.org/functions // + original by: Tyler Akins (http://rumkin.com) // + improved by: Thunder.m // + input by: Aman Gupta // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfixed by: Onno Marsman // + bugfixed by: Pellentesque Malesuada // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + input by: Brett Zamir (http://brett-zamir.me) // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA=='); // * returns 1: 'Kevin van Zonneveld' // mozilla has this native // - but breaks in 2.0.0.12! //if (typeof this.window['atob'] === 'function') { // return atob(data); //} var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = []; if (!data) { return data; } data += ''; do { // unpack four hexets into three octets using index points in b64 h1 = b64.indexOf(data.charAt(i++)); h2 = b64.indexOf(data.charAt(i++)); h3 = b64.indexOf(data.charAt(i++)); h4 = b64.indexOf(data.charAt(i++)); bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; o1 = bits >> 16 & 0xff; o2 = bits >> 8 & 0xff; o3 = bits & 0xff; if (h3 == 64) { tmp_arr[ac++] = String.fromCharCode(o1); } else if (h4 == 64) { tmp_arr[ac++] = String.fromCharCode(o1, o2); } else { tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); } } while (i < data.length); dec = tmp_arr.join(''); return dec; } {% endcodeblock %} - [Raw function on GitHub](https://github.com/kvz/phpjs/blob/master/functions/url/base64_decode.js) Please note that php.js uses JavaScript objects as substitutes for PHP arrays, they are the closest match to this hashtable-like data structure. Please also note that php.js offers community built functions and goes by the [McDonald's Theory](https://medium.com/what-i-learned-building/9216e1c9da7d). We'll put online functions that are far from perfect, in the hopes to spark better contributions. Do you have one? Then please just: - [Edit on GitHub](https://github.com/kvz/phpjs/edit/master/functions/url/base64_decode.js) ### Example 1 This code {% codeblock lang:js example %} base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA=='); {% endcodeblock %} Should return {% codeblock lang:js returns %} 'Kevin van Zonneveld' {% endcodeblock %} ### Other PHP functions in the url extension {% render_partial _includes/custom/url.html %}