2010-12-27 11 views
55

Estaba analizando un archivo csv usando php con la función fgetcsv. Se analizó todo el contenido en una línea, más tarde encontré, csv contiene carraige return como "\ r". Vi - se informó como php bug antes. He resuelto esto estableciendo configuración de ejecución de PHP que es -fgetcsv no puede leer la línea que termina en un archivo csv formateado en mac, ¿alguna solución mejor?

ini_set("auto_detect_line_endings", "1"); 

¿Hay alguna solución más o es este el camino correcto?

Gracias

+1

¿Funciona? (15 caracteres) – marcog

+0

sí, funciona para mí – Musa

+0

Usted debe responder a su propia pregunta aquí para que pueda cerrar la pregunta. –

Respuesta

29

Configuración auto_detect_line_endings se recomienda explícitamente por el php documentation.

Sin embargo, no puedo entender por qué querría delimitar líneas con \r en 2010. Si es posible, conviértalas al estilo UNIX \n.

+6

Mi cliente me dio un archivo que contiene \ r. Le pregunté qué versión del sistema operativo usa, me dijo que usa Leopard y Office 2008. Estoy creando un plugin para ellos donde habrá muchos usuarios finales, así que estoy tratando de construir esta plataforma cruzada. – Musa

+1

En mi caso, el usuario estaba en Mac OS (10.9, Maverick) usando MS Office Excel 2011. – marcovtwout

+0

En mi caso fue Excel 2013 en Windows 7. – JaseC

5

\r Las terminaciones de línea son creadas por Microsoft Excel al guardarlas como un archivo CSV, por lo que no hay mucho que objetar si está comenzando con una hoja de cálculo de Excel.

Usando auto_detect_line_endings funciona bien, o se puede normalizar los finales de línea con preg_replace('/\r\n|\n\r|\n|\r/', '\n', $subject);

Cuestiones relacionadas