2023-01-30T17:12:57
GwenDragonMist, kaum ist da so ein Schnippsel im HTML:
<?php
# auch hier nix ändern
# <a href="test.html" title="Erster Test" class="c1">Test 1</a>
echo "<a href="test.html" title="Erster Test" class="c1">Test 1</a>";
?>
<?
echo "<a href="test.html" title="Erster Test" class="c1">Test 1</a>";
?>
dann erzeugt den Schnippsel:
<?php
# auch hier nix õndern
# <a href="test.html" title="Erster Test" class="c1">Test 1</a>
echo "<a title="Erster Test" class="c1" href="https://example.org/tests/test.html">Test 1</a>";
?>
<?
echo "<a href="test.html" title="Erster Test" class="c1">Test 1</a>";
?>
Seltsam, warum schlug das denn beim obigen Code nicht an?
Ich hachte Zeile 76 fängt das ab?
Um das zu beheben, musst Du Deinem Parser eine weitere Konfiguration verpassen:
Der Grund: Per default beendet der
HTML::Parser "Processing instructions" (PIs) mit der SGML-Syntax, das heißt, mit einem einfachen
'>'. Wenn also Dein PHP-Schnipsel, wie im obigen Beispiel, HTML-Tags enthält, dann hört für den Parser die PI nach dem ersten Tag auf und danach wird wieder HTML interpretiert. Deswegen ist der Link in der
echo-Anweisung wieder ein Link. Also muss man dem Parser sagen, dass PIs erst mit
'?>' aufhören, wie's in XML üblich ist.
Das Originalbeispiel und Dein zweiter PHP-Schnipsel funktionieren "zufällig", weil das
'<a ' auch nach SGML-Syntax noch zur PI gezählt wird!