Crea un fichero UTF-8 al vuelo a partir de otro, con file y fwrite de PHP
Hoy comparto un pequeño truco para generar un archivo de texto en formato UTF-8 a partir de otro dado. Puede ser útil cuando, por ejemplo, tienes que automatizar el proceso de reducir el número de líneas de un archivo, por decir algo; o sea, cuando tienes que coger un archivo UTF-8 que ya tienes en tu sistema de ficheros y montar otro donde pegas algunas de las líneas que contiene el original.
Si te encuentras alguna vez con este problema vas a ver que plantea la pequeña complicación de que tú mism@ tienes que preocuparte de generar un nuevo fichero codificado con el juego de caracteres UTF-8.
1 2 3 4 5 6 7 8 9 10 11 12 |
$lines = file($filename, FILE_IGNORE_NEW_LINES); $file_handle = fopen($filename, 'wb'); fwrite($file_handle, "\xEF\xBB\xBF"); foreach($lines as $key => $value) { fwrite($file_handle, $value . PHP_EOL); } fclose($file_handle); |
¿Sabías que la representación hexadecimal del BOM para UTF-8 es EF BB BF? Tienes que codificar el BOM -la así llamada marca de orden de bytes- nada más abrir el archivo.
Gracias por tu aporte, pero me marca error en la linea 7