base64_encode.php 566 B

123456789101112131415161718192021
  1. <?php
  2. // $ echo test | php examples/base64_encode.php | base64 --decode
  3. require __DIR__ . '/../vendor/autoload.php';
  4. // encoding requires buffering in chunks of 3 bytes each
  5. $buffer = '';
  6. Clue\StreamFilter\append(STDIN, function ($chunk = null) use (&$buffer) {
  7. if ($chunk === null) {
  8. return base64_encode($buffer);
  9. }
  10. $buffer .= $chunk;
  11. $len = strlen($buffer) - (strlen($buffer) % 3);
  12. $chunk = substr($buffer, 0, $len);
  13. $buffer = substr($buffer, $len);
  14. return base64_encode($chunk);
  15. }, STREAM_FILTER_READ);
  16. fpassthru(STDIN);