Come si fa ad andare a capo con PHP? Mi sono sentito fare spesso questa domanda, ma la risposta varia a seconda di cosa realmente s’intenda chiedere. Mi spiego meglio.
Aggiungere automaticamente il tag <br> in una pagina HTML
All’interno di una pagina web il modo corretto per andare a capo è utilizzare il tag <br>. Se la domanda "come andare a capo con PHP" è orientata a come aggiungere automaticamente il tag <br> ad un testo non formattato in HTML, la risposta alla domanda chiama in causa la funzione nl2br(). Questa funzione, infatti, trasforma i ritorni a capo "fisici" dell’utente (la pressione del tasto "invio" durante la battitura di un testo all’interno di una textarea, per intenderci) nel corrispettivo tag HTML.
echo nl2br($_POST['testo']);
Se apriamo il sorgente della pagina noteremo che al testo (inviato tramite il metodo POST da un ipotetico form) sono stati aggiunti i tag <br> in modo automatico, in corrispondenza dei ritorni a capo inseriti dall’utente in fase di digitazione.
Andare a capo all’interno di un file di testo
Se, viceversa, la domanda riguarda come generare un ritorno a capo all’interno di un file di testo (ad esempio un log) la risposta è differente. I ritorni a capo, infatti, sono rappresentati in informatica dalla sequenza \r\n (Carriage Return + Line Feed). Tale sequenza indica al terminale che il testo debba essere "spezzato" con un ritorno a capo e che quindi continuerà su una nuova riga.
In tal caso PHP dispone di una costante predefinita (PHP_EOL) che ha lo scopo, appunto, di indicare la fine della linea (EOL sta per End Of Line). Vediamo un esempio:
$linea1 = 'Esempio di testo semplice...';
$linea2 = 'Sono andato a capo con PHP';
echo '<pre>' . $linea1 . PHP_EOL . $linea2 . '</pre>';
Eseguendo il codice otterremo:
Esempio di testo semplice... Sono andato a capo con PHP
Si noti che nell’esempio ho utilizzato il tag <pre> per rappresentare un testo preformattato, in altre parole il ritorno a capo viene mostrato a video anche se non c’è alcun tag <br> ma solo un ritorno a capo "fisico" (se non è chiaro vi consiglio di aprire il sorgente della vostra pagina).
E’ appena il caso di aggiungere che lo stesso effetto generato dalla costante PHP_EOL lo avremmo potuto ottenere in questo modo:
echo '<pre>' . $linea1 . "\r\n" . $linea2 . '</pre>';