Alles außerhalb eines Paares von öffnenden und schließenden Tags wird vom
PHP-Parser ignoriert, was es ermöglicht, dass PHP-Dateien gemischten
Inhalt haben können. Dadurch kann PHP in HTML-Dokumente eingebettet
werden, zum Beispiel um Templates zu erstellen.
Beispiel #1 PHP in HTML einbetten
<p>Das hier wird von PHP ignoriert, und vom Browser angezeigt.</p> <?php echo 'Wohingegen das hier geparst wird.'; ?> <p>Dies wird ebenfalls von PHP ignoriert, und vom Browser angezeigt.</p>
Dies funktioniert wie erwartet, da der PHP-Interpreter, wenn er auf einen
schließenden ?>-Tag trifft, einfach beginnt, alles mit Ausnahme des
direkt folgenden Zeilenumbruchs (siehe auch den Abschnitt Abgrenzung von
Anweisungen) auszugeben, bis er wieder auf einen öffnenden Tag
stößt. Das gilt nicht in der Mitte einer bedingten Anweisung. In diesem
Fall ermittelt der Interpreter das Resultat der Bedingung, bevor er
entscheidet, was übersprungen wird. Siehe das folgende Beispiel.
Verwendung von Strukturen mit Bedingungen
Beispiel #2 Fortgeschrittene Ausgabe unter Verwendung von Bedingungen
<?php if ($expression == true): ?> Dies wird angezeigt, wenn der Ausdruck wahr ist. <?php else: ?> Andernfalls wird dies angezeigt. <?php endif; ?>
In diesem Beispiel überspringt PHP die Blöcke, in denen die Bedingung
nicht erfüllt ist, obwohl diese außerhalb der öffnenden/schließenden
PHP-Tags liegen; PHP überspringt sie entsprechend der Bedingung, da der
PHP-Interpreter Blöcke innerhalb einer nicht erfüllten Bedingung
überspringt.
Für die Ausgabe von großen Textblöcken ist der Ausstieg aus dem
Parse-Modus generell effizienter, als den gesamten Text durch
echo oder print zu jagen.
Hinweis:
Wenn PHP in XML oder XHTML eingebettet wird, müssen die normalen
<?php ?>-PHP-Tags verwenden werden, um die Standards
einzuhalten.
When the documentation says that the PHP parser ignores everything outside the <?php ... ?> tags, it means literally EVERYTHING. Including things you normally wouldn't consider "valid", such as the following:
<html><body> <p<?php if ($highlight): ?> class="highlight"<?php endif;?>>This is a paragraph.</p> </body></html>
Notice how the PHP code is embedded in the middle of an HTML opening tag. The PHP parser doesn't care that it's in the middle of an opening tag, and doesn't require that it be closed. It also doesn't care that after the closing ?> tag is the end of the HTML opening tag. So, if $highlight is true, then the output will be:
<html><body> <p class="highlight">This is a paragraph.</p> </body></html>
Otherwise, it will be:
<html><body> <p>This is a paragraph.</p> </body></html>
Using this method, you can have HTML tags with optional attributes, depending on some PHP condition. Extremely flexible and useful!
One aspect of PHP that you need to be careful of, is that ?> will drop you out of PHP code and into HTML even if it appears inside a // comment. (This does not apply to /* */ comments.) This can lead to unexpected results. For example, take this line: