2012-08-07 16 views
5

Ho un CSV sto scaricando da una fonte che non sono in controllo della e alla fine di ogni riga è un personaggioPHP Rimozione di Windows^M Character

^M 

in fase di stampa ad un terminale bash. Come posso disinfettare questo input in modo programmatico in PHP?

risposta

15

Quello che stai vedendo è un carattere di controllo di Windows. Per risolvere questo problema in PHP, è necessario $file = str_ireplace("\x0D", "", $file) che funzionerà se esadecimale è in minuscolo o in maiuscolo.

+0

Bingo - che ha fatto il trucco valido approccio – nsfyn55

3

^M è un carriage return, si dovrebbe essere in grado di rimuovere con:

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

Si può anche chiedere PHP per rilevare automaticamente eventuali fine riga strane semplicemente aggiungendo in questa linea prima di leggere il file CSV e si non sarà richiesto di fare nient'altro

ini_set('auto_detect_line_endings', true); 
+0

, ma non ha funzionato per me, che è un po 'strano. Ho finito per sostituire la vittoria con linux char: preg_replace ('~ \ r \ n? ~', "\ N", $ string); –

+0

Ok, penso che potrebbe essere possibile avere un OS diverso da miniera. Sto usando Mac, quindi potrebbe non funzionare su tutti i sistemi operativi. È strano come hai detto tu. – ksoni