codice:
$stringa = preg_replace( "/(\\n\\n)(\\n*)(.*)/" , "$1$3" , $stringa);
Questo sostituisce \n ripetuto N volte (con N> 2) con \n ripetuto due volte
In generale la funzione che cerchi è preg_replace e non str_replace, poichè la seconda (str_replace) richiede che tu sappia in anticipo esattamente quante volte \n appare nella tua stringa e ciò non è possibile
Questo invece
codice:
$stringa = preg_replace( "/\\r\\n\\r\\n([\\r\\n\\]*)(.*)/" , "\\n\\n$2" , $stringa);
Sostituisce \r\n che si ripete 3 o più volte cone \n ripetuto 2 volte
Da come sono strutturate questi due suggerimenti e dal funzionamento di preg_replace dovresti essere in grado di fare tutto quello che ti serve
Ad esempio queste due istruzioni in sequenza sostituiscono tutti i \r\n con \n e dopo ogni sequenza di \n superiore a 2 in due \n
codice:
$stringa = preg_replace( "/\\r\\n/" , "\\n" , $stringa ); $stringa = preg_replace( "/\\n\\n[\\n]*(.*)/" , "\\n\\n$1" , $stringa );
Le espressioni regolari, se imparate e usate correttamente, sono molto potenti