2010-01-29 13 views

Odpowiedz

5

Spróbuj wyrażenia regularnego (?:\r\n|[\r\n]):

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

+1, niezły. Dodałbym tylko '+' na końcu wyrażenia regularnego. –

+0

Nice! Zawsze używałem '\ r? \ N | \ r' lub' \ n | \ r \ n? ', Ale myślę, że to jest bardziej przejrzyste. –

-1

Czy nie działałaby str_replace(array("\n", "\r"), "", $string)?

+1

Zapomniałem, że str_replace zajmie tablice. Jednak twoja nie zastąpi przecinkami. Do tego myślę, że musi to być 'str_replace (array (" \ n "," \ r "), array (',', ''), $ string)' – sprugman

+0

hmm ... nie, to nie dostanie tylko przypadek \ r. (Czy to istnieje?) – sprugman

+0

po prostu zamień drugi argument na '", "' –

2

nie chcesz używać regex prostego zastąpienia takiego. Regularne funkcje zastępowania ciągów są zwykle znacznie szybsze. W przypadku podziału wiersza można użyć parametru OS aware constant PHP_EOL, np.

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

W systemie Windows zastąpi to \r\n. Na komputerze Mac \r i we wszystkich innych systemach \n.

+0

To tylko aktualna maszyna, a co jeśli pochodzi z innej maszyny? –

+1

@ Chacha102, jeśli drugi komputer uruchamia inny system operacyjny, wówczas PHP_EOL nie będzie działać. Mimo to uważam to za godną uwagi opcję. – Gordon