fork(1) download
  1. <?php
  2. define('URL_BASE64_FROM', '+/');
  3. define('URL_BASE64_TO', '-_');
  4. function url_base64_encode($data) {
  5. $encoded = base64_encode($data);
  6. if ($encoded === false) {
  7. return false;
  8. }
  9. return str_replace('=', '', strtr($encoded, URL_BASE64_FROM, URL_BASE64_TO));
  10. }
  11. define('PACK_NUMS_FORMAT', 'n*');
  12. function pack_nums($num_arr) {
  13. array_unshift($num_arr, PACK_NUMS_FORMAT);
  14. return call_user_func_array('pack', $num_arr);
  15. }
  16. function url_embed_array($arr) {
  17. return url_base64_encode(gzcompress(pack_nums($arr)));
  18. }
  19. // #####
  20. $arr = range(1, 1000);
  21. $palec_encoded = url_embed_array($arr);
  22. $op_encoded = urlencode(base64_encode(gzcompress(implode(',', $arr))));
  23. printf("Palec:\t%d\nOP:\t%d\n", strlen($palec_encoded), strlen($op_encoded));
  24. ?>
Success #stdin #stdout 0.01s 20560KB
stdin
Standard input is empty
stdout
Palec:	2060
OP:	2800