2010-01-29 5 views

risposta

5

Prova l'espressione regolare (?:\r\n|[\r\n]):

preg_replace('/(?:\r\n|[\r\n])/', ', ', $str) 
+0

+1, bello. Vorrei solo aggiungere un '+' alla fine della regex. –

+0

Bello! Ho sempre usato '\ r? \ N | \ r' o' \ n | \ r \ n? ', Ma penso che sia più chiaro. –

-1

str_replace(array("\n", "\r"), "", $string) non funziona?

+1

Ho dimenticato che str_replace prenderà gli array. Tuttavia, il tuo non verrà sostituito con virgole. Per quello penso che debba essere 'str_replace (array (" \ n "," \ r "), array (',', ''), $ stringa)' – sprugman

+0

hmm ... no, quello non otterrà il solo caso. (Esiste?) – sprugman

+0

basta sostituire il secondo argomento con '", "' –

2

Non volete utilizzare un Regex per una semplice sostituzione come questo. Le normali funzioni di sostituzione delle stringhe sono di solito molto più veloci. Per l'interruzione di riga, puoi utilizzare OS aware constant PHP_EOL, ad es.

str_replace(PHP_EOL, ', ', $someString); 

Su Windows, questo sostituirà \r\n. Su Mac \r e su tutti gli altri sistemi \n.

+0

Questa è solo la macchina corrente, e se proviene da un'altra macchina? –

+1

@ Chacha102 se l'altra macchina esegue un altro SO, quindi PHP_EOL non lo farà. Comunque, lo trovo un'opzione degna di nota. – Gordon

Problemi correlati