@Gunnar Bittersmann @Julius @Christian Kruse
Der Syntax-Highlighter für PHP (~~~ php
) startet im PHP-Modus, während eine komplette PHP-Datei auf der Festplatte sozusagen immer im HTML-Modus startet (und mit <?php
am Dateibeginn in den PHP-Modus umgeschaltet wird).
Das kann der Syntax-Highlighter aber nicht wirklich anders handhaben, weil sonst bei jedem kurzen Codeausschnitt…
for ($i = 1; $i <= 24; $i++) {
echo $i, "<br>\n";
}
…ein einleitendes <?php
hinzugefügt werden müsste. Das ist nicht praktikabel.
Das Beispiel aus Gunnars Post könnte also um ein einleitendes ?>
ergänzt werden, um in den HTML-Modus zu schalten.
?>
<a
<?php if ($Menüpunkt != $aktuelleSeite): ?>
href="http://example.net/stairway/to/heaven"
<?php else: ?>
tabindex="0"
<?php endif; ?>
>
Stairway to heaven
</a>
Das ergibt inhaltlich aber natürlich wenig Sinn.
Alternativ könnte man höchstens im Syntax-Highlighter so eine Logik haben: „Wenn die Eingabe irgendwo nicht direkt am Anfang noch <?php … ?>
-Sequenzen enthält, dann gehe davon aus, dass die Eingabe im HTML-Modus beginnt.“ Das scheint beispielsweise der Highlighter von vBulletin zu machen. Das ist oft „richtig genug“:
Es kann aber genauso danebenliegen:
(Beziehungsweise ist es letztlich nicht entscheidbar. Das $x=
usw. könnte ja auch tatsächlich als HTML-Ausgabe gemeint sein.)
Mir ist der Ansatz des Highlighters hier im Forum, den Start-Modus nicht erraten zu wollen, deshalb grundsätzlich lieber.
Die sauberste Lösung wäre es wohl, einen zweiten Code-Tag für PHP-Highlighting hinzuzufügen, der im HTML-Modus beginnt, oder der ~~~ php
-Syntax einen Parameter hinzuzufügen. So im Sinne von: ~~~ php startinline=false
(was aber so nicht funktioniert).
Kann auch gut sein, dass es so was auch hier im Forum bereits gibt.