2012-08-07 14 views
5

Tengo un CSV estoy descargando de una fuente que no estoy en el control y el final de cada línea es un personajePHP Extracción de Windows^M Carácter

^M 

cuando se imprime a un terminal bash. ¿Cómo puedo desinfectar esta entrada programáticamente en PHP?

Respuesta

15

Lo que está viendo es un personaje de control de Windows. Para deshacerse de esto en PHP, lo que necesita hacer es $file = str_ireplace("\x0D", "", $file) esto funcionará ya sea hexadecimal en minúscula o mayúscula.

+0

Bingo - que hizo el enfoque válido truco – nsfyn55

3

^M es una carriage return, usted debe ser capaz de eliminar con:

$string = str_replace("\r", "", $string); 
1

También puede pedir a PHP para detectar automáticamente cualquier finales de línea extraños con sólo añadir en esta línea antes de leer el archivo CSV y se no se requerirá que haga nada más.

ini_set('auto_detect_line_endings', true); 
+0

, pero no funcionó para mí, que es un poco raro. Terminé reemplazando win con linux chars: preg_replace ('~ \ r \ n? ~', "\ N", $ string); –

+0

Ok, creo que es posible que tengas un sistema operativo diferente al mío. Estoy usando Mac, por lo que podría no funcionar en todos los sistemas operativos. Es extraño como dijiste. – ksoni