3v4l.org

run code in 300+ PHP versions simultaneously
<?php function b62e($str) { if(mb_check_encoding($str, 'ASCII')) { $out = ''; $len = strlen($str); for($i=0; $i<$len; $i+=8) { $chunk = substr($str, $i, 8); $outlen = ceil( strlen($chunk)*8/6 );// 8bit/char in, 6bits/char out, round up $hex = bin2hex($chunk);// gmp won't convert from binary, so go via hex $raw = gmp_strval(gmp_init(ltrim($hex, '0'), 16), 62);// gmp doesn't like leading 0s $out .= str_pad($raw, $outlen, '0', STR_PAD_LEFT); } return $out; } return false;// unicode chars not supported } function b62d($str) { if(mb_check_encoding($str, 'ASCII')) { $out = ''; $len = strlen($str); for ($i=0; $i<$len; $i+=11) { $chunk = substr($str, $i, 11); $outlen = floor( strlen($chunk)*6/8 ); //6bit/char in, 8bits/char out, round down $raw = gmp_strval(gmp_init(ltrim($chunk, '0'), 62), 16); //gmp doesn't like leading 0s $pad = str_pad($raw, $outlen * 2, '0', STR_PAD_LEFT); //double output length as as we're going via hex (4bits/char) $out .= pack('H*', $pad); //same as hex2bin } return $out; } return false;// unicode chars not supported } function obf62rep($which){// make array before translate string $rep = []; $str1 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $str2 = 'GHIJKLMNqrstuvwx01OPQRSTUVWXYZhijklmnop23456789abcdefgyzABCDEF'; if($which){// while obfuscate from-->to $fr = str_split($str1); $to = $str2; }else{// while de-obfuscate to-->from $fr = str_split($str2); $to = $str1; } foreach($fr as $k=>$v){// make array tr-->to $rep[$v] = $to[$k]; } return $rep; } function obf62e($str){return strtr($str, obf62rep(1));}// translate string = obfuscate function obf62d($str){return strtr($str, obf62rep(0));}// translate back = deobfuscate function ob62e($str){return obf62e(b62e($str));}// encode base62 + obfuscate function ob62d($str){return b62d(obf62d($str));}// decode base62 + deobfuscate define('TAB',"\t--->\t"); for($i=0; $i<17; $i++){ $encoded = b62e($i); $encoded_obf= obf62e($encoded); $decoded_obf= obf62d($encoded_obf); $decoded = b62d($decoded_obf); echo $i.TAB.$encoded.TAB.$encoded_obf.TAB.$decoded_obf.TAB.$decoded.PHP_EOL; } //
Output for 7.2.0 - 7.2.34, 7.3.0 - 7.3.31, 7.3.33, 7.4.0 - 7.4.25, 7.4.27 - 7.4.32, 8.0.0 - 8.0.12, 8.0.14 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
0 ---> 0m ---> GS ---> 0m ---> 0 1 ---> 0n ---> GT ---> 0n ---> 1 2 ---> 0o ---> GU ---> 0o ---> 2 3 ---> 0p ---> GV ---> 0p ---> 3 4 ---> 0q ---> GW ---> 0q ---> 4 5 ---> 0r ---> GX ---> 0r ---> 5 6 ---> 0s ---> GY ---> 0s ---> 6 7 ---> 0t ---> GZ ---> 0t ---> 7 8 ---> 0u ---> Gh ---> 0u ---> 8 9 ---> 0v ---> Gi ---> 0v ---> 9 10 ---> 3H6 ---> J6M ---> 3H6 ---> 10 11 ---> 3H7 ---> J6N ---> 3H7 ---> 11 12 ---> 3H8 ---> J6q ---> 3H8 ---> 12 13 ---> 3H9 ---> J6r ---> 3H9 ---> 13 14 ---> 3HA ---> J6n ---> 3HA ---> 14 15 ---> 3HB ---> J6o ---> 3HB ---> 15 16 ---> 3HC ---> J6p ---> 3HC ---> 16
Output for 7.3.32, 7.4.26, 7.4.33, 8.0.13
Fatal error: Uncaught Error: Call to undefined function gmp_strval() in /in/r2DsY:11 Stack trace: #0 /in/r2DsY(72): b62e(0) #1 {main} thrown in /in/r2DsY on line 11
Process exited with code 255.

preferences:
159.33 ms | 408 KiB | 5 Q