dedlfix: Mit PHP PHP-Start- und Endkennzeichen in Datei schreiben

Beitrag lesen

Hi!

Ich weiß zum Beispiel, dass die üblichen Tagsoup-Parser der gängigen Browser beim erstbesten Vorkommen von </ einen Javascript-Block für beendet erklären, auch wenn "</" innerhalb eines Strings steht. Ein ähnliches Verhalten hatte ich beim PHP-Parser auch unterstellt. Präventiv, sozusagen.

HTML und Javascript sind zwei zusammengemixte Systeme. Der HTML-Parser interessiert sich erstmal nicht für das Zeug, das da nach dem öffnenden script-Tag kommt und sucht einfach nur das Ende. Es ist ja nicht gesagt, dass da zwingend eine Sprache kommt, die der Browser üblicherweise nativ beherrscht, wie eben Javascript. Ein Szenario könnte sein, dass ein Plugin sich um den Script-Code kümmert. Und um dem den Code übergeben zu können, wäre auch schon der HTML-Parser auf Kenntnisse der Syntax angewiesen. Das ergäbe eine ziemliche Verzahnung beider Systeme.

PHP hingegen ist nur ein System. Das HTML darum, in dem es meist angesiedelt ist, wird unbeachtet durchgereicht. Ab <?php parst der PHP-Parser los und wenn da ein Stringliteral kommt, muss das zuerst abgeschlossen sein, bevor ein ?> wieder als was anderes als zwei Zeichen erkannt wird. Aber mal angenommen, er würde über ein weiteres <?php stolpern, was sollte er damit anderes machen als eine Syntax-Fehlermeldung ausgeben. Insofern kann man es auch ohne Kenntnis der Harmlosigkeit von <?php ?> in Stringliteralen auf einen Versuch ankommen lassen, die Zeichenfolge so zu notieren.

Lo!