Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

HTML in PHP: echo, heredoc, nowdoc e uscita da PHP

HTML in PHP: echo, heredoc, nowdoc e uscita da PHP

Incolla della marcatura già pronta e ottieni cinque modi per metterla in un file PHP, ciascuno con l'escaping giusto. Tutto avviene nel tuo browser: la marcatura non viene inviata da nessuna parte né conservata.

Trascina qui un .html: il file viene letto localmente.
Trattamento della marcatura

È quanto di più vicino a ciò che produce codebeautify, ma con l'escaping: senza, qualsiasi apostrofo nella marcatura rompe la stringa PHP.

Incolla dell'HTML sopra: il codice PHP comparirà qui.

La marcatura non lascia il tuo browser: la conversione avviene in locale, senza inviare nulla a un server.

Cinque modi e quando ciascuno è adatto

echo riga per riga — una riga dopo l'altra, ciascuna con la propria chiamata. L'aspetto più familiare, comodo quando fra le righe va inserita una condizione o un ciclo. nowdoc — un blocco in cui PHP non interpreta nulla: né sequenze di escape né variabili. La marcatura entra nel codice byte per byte e non richiede alcun escaping. È il modo più sicuro per trasferire HTML altrui. heredoc — lo stesso blocco ma con le variabili: $title al suo interno viene sostituito. Per questo il dollaro e la barra rovesciata vengono sfuggiti, mentre le virgolette no. Stringa in una variabile — la marcatura viene raccolta in $html per concatenazione. Serve quando va restituita da una funzione o passata a un motore di template invece di essere stampata subito. Uscita da PHP — chiudere il tag e consegnare la marcatura così com'è. È esattamente ciò che consiglia la documentazione di PHP: nessun escaping, nessun costo per incollare stringhe, e l'evidenziazione della sintassi nell'editor continua a funzionare. Il tag di chiusura ?> manca di proposito nel codice generato. Qualsiasi carattere dopo di esso — anche un a capo casuale a fine file — finisce nell'output e produce il classico «headers already sent».

Perché i convertitori senza escaping producono codice inservibile

Il convertitore online da HTML a PHP più diffuso fa esattamente una cosa: taglia il testo in righe e incolla echo '<riga>';. Lì non c'è alcuna sostituzione di caratteri, e si vede già al primo pezzo di marcatura vera. Un attributo fra virgolette singole — <a href='/price'> — chiude la stringa PHP in mezzo al testo. Poi arriva un errore di sintassi. Una barra rovesciata a fine riga si mangia la virgoletta di chiusura e incolla due righe in una. Un simbolo del dollaro fra virgolette doppie o in un heredoc trasforma $total in un valore vuoto. trim() su ogni riga taglia in silenzio i rientri dentro pre, textarea e code: sulla pagina cambia ciò che vede il visitatore. Tutte le righe vengono incollate senza a capo, così l'HTML risultante diventa un'unica riga infinita. Qui ognuno di questi casi è gestito, e l'etichetta dell'heredoc è scelta in modo da non coincidere con nessuna riga della tua marcatura: altrimenti il blocco si chiuderebbe a metà.

Domande frequenti