PHP – Problemas con los saltos de linea en csv
En ocasiones necesitaremos leer los datos que contiene un CSV, lo que he estado usando siempre había sido algo al estilo.
ini_set(‘auto_detect_line_endings’,TRUE);while (($datos = fgetcsv($gestor, 100000, “n”)) !== FALSE) {//Lo que necesitara, normalmente parsearlo}
Hace poco me encontré con un error en ese código, al intentar parsear un fichero que venia desde un MAC, el problema esta en que Windows y MAC no tratan igual los saltos de linea, por lo que “n” no existía en el fichero que me enviaban, la solución es el siguiente código:
<?phpini_set(‘auto_detect_line_endings’,TRUE);$gestor= fopen(‘/path/to/file’,‘r’);
while ( (while ( ($datos = fgetcsv($gestor) ) !== FALSE ) {//Lo que necesitara, normalmente parsearlo}
El secreto esta en esta linea:
ini_set(‘auto_detect_line_endings’,FALSE);?>
Y en el Bucle no indicarle el fin de linea, como siempre, espero os sirva de utilidad.
Apasionado de la montaña, del SEO y la programación a partes iguales, llevo más de 20 años trabajando en distintos sectores, pero siempre enfocado a la web, si quieres saber más de mí, sigue el enlace.