Questo potrebbe sembrare un inganno, ma non è certo - ho cercato sia il SO che il resto del web per una risposta al mio problema e ho finito per trovare le stesse "soluzioni" insufficienti. Comunque, ecco qui:
Sto salvando l'input dell'utente da un'area di testo a un database MySQL (all'interno di un ambiente WordPress, ma credo che non dovrebbe importare questo problema). Viene successivamente recuperato dal DB per essere mostrato agli amministratori nel back-end del sito. Il problema si verifica quando gli utenti inviano testo con interruzioni di riga (ovvero preme il tasto Invio).
Una stringa di esempio potrebbe apparire così:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!
Greetings,
Bill
Non ci sono caratteri di fine riga ("\ n", "\ r" o simili) nella stringa.
Lo sto usando nl2br()
per generare output HTML, ma non è abbastanza. Il risultato è quindi:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill
Quale, per quanto ho capito, è il nl2br()
risultato atteso , in quanto inserisce i tag e non dovrebbe sostituire le interruzioni di riga in primo luogo?
Tuttavia, il formato di cui ho bisogno sarebbe questo:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill
Se la stringa contenesse caratteri EOL come "\ n", la colpirei con o str_replace()
o avrei preg_replace()
finito con essa, ma non ho idea di quale ago alimentare entrambe le funzioni se non ci sono caratteri lì innanzitutto.
Posso accedere manualmente al campo pertinente nel DB, premere Backspace per ogni interruzione di riga e ciò che in seguito voglio fare con la stringa funziona. Quindi so di aver bisogno del formato sopra.