2010-10-29 2 views
6

Sono un po 'bloccato. Come rimuovere più righe nuove che si trovano in fila con una nuova riga. Potrebbero esserci fino a 20 newline uno accanto all'altro. Per esempioPHP multiple nuove linee

James ha detto ciao \ n \ n \ n \ n Test \ n Prova due \ n \ n

finirebbe come: detto

James ciao \ n Test \ n prova due \ n

risposta

10

Provate questo:

$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); 

Questo dovrebbe farlo, partendo dal presupposto che le nuove righe consecutive sono veramente consecutivi e non hanno alcuna spazi bianchi (tabulazioni, spazi, ritorni a capo, ecc ...) tra di loro.

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

migliorando la risposta di Marc B:

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

che dovrebbe corrispondere un ritorno a capo iniziale, allora almeno uno di un gruppo di qualsiasi quantità di spazio bianco seguito da una nuova riga e sostituirlo con una singola nuova riga.