UNPKG

phpjs

Version:

php.js offers community built php functions in javascript

95 lines (76 loc) 2.94 kB
--- layout: page title: "JavaScript base64_encode function" comments: true sharing: true footer: true alias: - /functions/view/base64_encode:358 - /functions/view/base64_encode - /functions/view/358 - /functions/base64_encode:358 - /functions/358 --- <!-- Generated by Rakefile:build --> A JavaScript equivalent of PHP's base64_encode {% codeblock url/base64_encode.js lang:js https://raw.github.com/kvz/phpjs/master/functions/url/base64_encode.js raw on github %} function base64_encode (data) { // From: http://phpjs.org/functions // + original by: Tyler Akins (http://rumkin.com) // + improved by: Bayron Guevara // + improved by: Thunder.m // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfixed by: Pellentesque Malesuada // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: Rafał Kukawski (http://kukawski.pl) // * example 1: base64_encode('Kevin van Zonneveld'); // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA==' // mozilla has this native // - but breaks in 2.0.0.12! //if (typeof this.window['btoa'] === 'function') { // return btoa(data); //} var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc = "", tmp_arr = []; if (!data) { return data; } do { // pack three octets into four hexets o1 = data.charCodeAt(i++); o2 = data.charCodeAt(i++); o3 = data.charCodeAt(i++); bits = o1 << 16 | o2 << 8 | o3; h1 = bits >> 18 & 0x3f; h2 = bits >> 12 & 0x3f; h3 = bits >> 6 & 0x3f; h4 = bits & 0x3f; // use hexets to index into b64, and append result to encoded string tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); } while (i < data.length); enc = tmp_arr.join(''); var r = data.length % 3; return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3); } {% endcodeblock %} - [Raw function on GitHub](https://github.com/kvz/phpjs/blob/master/functions/url/base64_encode.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_encode.js) ### Example 1 This code {% codeblock lang:js example %} base64_encode('Kevin van Zonneveld'); {% endcodeblock %} Should return {% codeblock lang:js returns %} 'S2V2aW4gdmFuIFpvbm5ldmVsZA==' {% endcodeblock %} ### Other PHP functions in the url extension {% render_partial _includes/custom/url.html %}