Il problema principale che hai con tutte le varianti che hai provato è che entrambi \n
e \r
sono caratteri di escape con escape solo quando li usi in una stringa tra virgolette doppie .
In PHP, c'è una grande differenza tra '\r\n'
e "\r\n"
. Nota le virgolette singole nella prima e le virgolette doppie nella seconda.
Quindi:'\r\n'
risulterà in una stringa di quattro caratteri contenente una barra, una 'r', un'altra barra e una 'n', mentre "\r\n"
conterrà due caratteri, quelli rappresentati dalla nuova riga e dai caratteri di ritorno a capo.
Quindi la risposta diretta alla tua domanda è che devi usare il secondo degli esempi che hai fornito nella domanda, ma con virgolette doppie invece di virgolette singole:
$text = str_replace("\r\n",'', $text);
Vale la pena sottolineare che ciò rimuoverà tutto nuove righe dall'input e sostituirle con niente. Se è presente più di una nuova riga nell'input, verranno tutte rimosse. Senza saperne di più sulla tua candidatura, non so se è questo quello che vuoi, ma ecco alcuni pensieri:
-
Se vuoi solo rimuovere le righe vuote (e altri spazi bianchi) dalla fine della stringa di input, puoi usare
trim()
funzione invece. -
Se vuoi mantenere la formattazione per l'output in HTML, allora
nl2br()
la funzione ti aiuterà. Se desideri eseguire l'output in HTML senza la formattazione, potrebbe non essere necessario rimuoverli, poiché il browser non eseguirà il rendering delle interruzioni di riga da \n caratteri. -
Se sostituisci le nuove righe con niente, come nel tuo esempio, l'ultima parola della prima riga ora scorrerà direttamente nella prima parola della seconda riga e così via. Potresti preferire sostituirli con uno spazio piuttosto che con niente.
-
È possibile che gli utenti possano inviare l'input solo con
\n
senza il\r
corrispondente o viceversa (questo potrebbe essere dovuto al loro sistema operativo o browser, o a un hack deliberato o a una serie di altri motivi). Se vuoi sostituire tutti casi di entrambi questi personaggi, un modo più affidabile per farlo sarebbe sostituirli individualmente, piuttosto che fare affidamento sul fatto che siano uno accanto all'altro.str_replace()
ti consente di farlo specificandoli in un array. Puoi anche usarestrtr()
opreg_replace()
per raggiungere lo stesso obiettivo.
Spero di esserti stato d'aiuto.