picture online imagen file_get_contents error encoded convert base64_decode php encoding base64

online - ¿Cuáles son las diferencias entre PHP base64_encode y*nix base64?



php $file to base64 (6)

Al hacer un eco me da esto:

MacPro:~ bardiir$ echo ''test'' test MacPro:~ bardiir$

Supongo que es posible que tenga un final de línea incluido en el Unix, ya que el eco probablemente está agregando un carácter de nueva línea, incluso si se canaliza a través de la codificación base64.

El base64_encode base64 PHP está devolviendo una cadena diferente al comando base64 linux. ¿Por qué es esto?

PHP:

$ php <?php echo base64_encode(''test''); ?> dGVzdA==

Linux base64:

$ echo ''test'' | base64 dGVzdAo=


El linux base64 tiene una nueva línea al final.


Es porque la versión Unix codifica también el final de la línea.

Para recibir un efecto similar en PHP, tendrás que hacer algo como eso:

echo base64_encode(''test''.PHP_EOL);

que dará salida:

dGVzdAo=

Vea la prueba aquí: ideone.com/HorVD

EDITAR: Como mencionó Charles, PHP_EOL es específico de la plataforma, así que para verificar lo anterior en Windows tendrá que reemplazarlo con el símbolo de fin de línea similar a Unix:

echo base64_encode("test/n");


Lo mismo a los anteriores.

En Mac OS X, solo prueba esto:

$ echo ''test'' | cat -e test$

O,

$ echo -n ''test'' | cat -e test

Y, sobre el comando echo, podemos ver el tip:

La opción echo -e en ubuntu no funciona



echo generalmente genera un nuevo carácter de línea al final de la cadena, para suprimir el uso del -n :

$ echo -n ''test'' | base64 dGVzdA==

Del mismo modo para PHP:

$ php <?php echo base64_encode("test/n"); ?> dGVzdAo=