Do not mis interpret
<?php echo 'Ending tag excluded';
with
<?php echo 'Ending tag excluded';
<p>But html is still visible</p>
The second one would give error. Exclude ?> if you no more html to write after the code.
Separazione delle istruzioni
Come in C od in Perl, il PHP richiede che le istruzioni siano chiuse dal punto e virgola al termine di ogni istruzione. I tag di chiusura di un blocco di codice PHP implicano in automatico il punto e virgola; non occorre, pertanto, inserire il punto e virgola per chiudere l'ultima riga di un blocco PHP. Il tag di chiusura del blocco include il newline immediatamente seguente, se presente.
<?php
echo 'Questo è un test';
?>
<?php echo 'Questo è un test' ?>
<?php echo 'Qui è stato omesso il tag di chiusura';
Nota:
Il tag di chiusura di un blocco PHP alla fine di un file è opzionale, ed in alcuni casi è utile ometterlo quando si utilizzano le funzioni include o require, in modo che spazi indesiderati non vengano generati alla fine dei file, e quindi sia ancora possibile aggiungere intestazioni alla risposta HTTP. È utile anche quando si usa l'output buffering, e non si vogliono avere spazi indesiderati alla fine delle parti generate dai file inclusi.
If you want to keep the newline after a closing tag in the output, just add a space after the closing tag, and the newline will not be ignored.
If you are embedding this in XML, you had better place the ending '?>' there or the XML parser will puke on you. XML parsers do not like processing instructions without end tags, regardless of what PHP does.
If you're doing HTML like 90% of the world, or if you are going to process/interpret the PHP before the XML parser ever sees it, then you can likely get away with it, but it's still not best practice for XML.
One newline character (or sequence) is dropped out by the parser after "?>", so you can add the beloved "final newline" to your file after "?>"
Example for plain text outputs:
<? foreach($array as $elem){ ?>
Value: <?=$elem?>
<? } ?>
(You have to add an extra enter after <?=$elem?> if you want to see a newline in the output.
