2010-10-29 13 views
6

Trochę utknąłem. Jak usunąć wiele linii nowego wiersza z jednym znakiem nowej linii. Obok siebie może znajdować się do 20 linii dodatkowych. Na przykładWiele nowych linii PHP

James cześć \ n \ n \ n \ Test \ n Test dwóch \ n \

zakończy się jako:

James cześć \ n Test \ n Test dwóch \ n

Odpowiedz

10

Spróbuj tego:

$str = "Hello\n\n\n\n\nWorld\n\n\nHow\nAre\n\nYou?"; 
$str = preg_replace("/\n+/", "\n", $str); 
print($str); 
1
$fixed_text = preg_replace("\n+", "\n", $text_to_fix); 

To powinno wystarczyć, przy założeniu, że kolejne nowe linie są naprawdę z rzędu i nie mają żadnego spacje (tabulatory, spacje, karetki, etc ...) między nimi.

0
$str = 'James said hello\n\n\n\n Test\n Test two\n\n'; 
echo preg_replace('{(\\\n)\1+}','$1',$str); 
4

Poprawa na Marc B. odpowiedź:

$fixed_text = preg_replace("\n(\s*\n)+", "\n", $text_to_fix); 

Która powinna odpowiadać początkowej nowej linii, to przynajmniej jeden z grupy dowolnej ilości spacji po którym następuje znak nowej linii i zastępuje go pojedynczym znakiem nowej linii.

Powiązane problemy