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.
Instrucción separador
Como en C o Perl, PHP requiere que las instrucciones terminen en punto y coma al final de cada declaración. La etiqueta de fin de bloque de PHP automáticamente implica un punto y coma. No se tiene que usar punto y coma para cerrar la última línea de código de PHP. La etiqueta de fin de bloque incluirá de inmediato salto de línea si no está presente.
<?php
echo 'Esto es una prueba';
?>
<?php echo 'Esto es una prueba' ?>
<?php echo 'Hemos omitido la última etiqueta de cerrado';
Nota:
Note: La etiqueta de fin de bloque es opcional al final del archivo y es útil omitirlo cuando se utilizan sentencias include o require, para que no se produzcan espacios en blanco al final de los archivos cuando se quieren mandar cabeceras de http. También sirve cuando se captura la salida con output buffering y no se desean espacios innecesarios al final de partes generadas por archivos incluídos.
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.
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.
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.
