• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

XHTML-Validierung: Problem mit & in Links

bodil

Mitglied
Beim Validieren der Website an der ich gerade baue, bekomme ich regelmäßig den Fehler:
reference to entity "..." for which no system identifier could be generated
Naheliegende Fehlerlösung: In Links darauf achten, die Parameter in der URL nicht mit & sondern mit & aneinanderzureihen. Hatte ich aber schon.
Nächste Idee:
PHP:
    ini_set('arg_separator.output', '&');
Sah vielversprechend aus, hat auf einer anderen Seite auch schon funktioniert, hier leider nicht. Die & in meinen Links werden immernoch in & umgewandelt.

Hat jemand ne Idee, woran das liegen kann? Fiese Servereinstellung (Servereinstellung == Buch mit sieben Siegeln)? PEBKAC? (Würde mich auch nicht wundern.)

Ein
PHP:
    echo ini_get('arg_separator.output');
direkt nach dem ini_set('arg_separator.output', '&'); liefert übrigens ein &
 
Werbung:
bei a versucht der browser ein entity wie in b zu finden, doch &b=2 ist keine gültige referenz. demnach passiert nichts.
da man keine variablen mit dem namen "amp;" verwendet ist das ganze eigentlich auch quatsch und man kann ohne bedenken ein & in urls nutzen.

alle drei beispiele funktionieren identisch. der browser wandelt die entities und urlencodes um, in php muss kein anderer sperator gesetzt werden.

Code:
<a href="http://www.domain.de?a=1&b=2">a</a>
<a href="http://www.domain.de?a=1&amp;b=2">b</a>
<a href="http%3A%2F%2Fwww.domain.de%3Fa%3D1%26b%3D2">c</a>
 
Vielen Dank für deine Antwort!

Verstehe ich dich richtig, dass die Validierung an dieser Stelle wurscht ist? Das glaube ich gerne, fürchte allerdings, dass ich das um die Ohren gehauen bekomme, wenn ich hier im Forum mal eine Frage zur fertigen Seite haben sollte ...

Mein Problem mit deinem letzten Vorschlag ist der, dass mein ModRewrite das nicht rafft und die folgenden Parameter unterschlägt.

Mein Verdacht ist, dass es hierzu eine Einstellung in der Server-Konfiguration gibt, die mein ini_set() an dieser Stelle komplett ignorieren lässt. Kann das sein? Obwohl ini_get den richtigen Wert ausspuckt?
 
Werbung:
kannst du das mit dem mod_rewrite genauer erklären? bei den 3 beispielen ist der request an den server identisch.

ps:
die validierung ist in dem fall nicht tragisch. korrekt ist es jedoch variante b oder c zu verwenden.
 
Ich arbeite mit einem CMS (Contenido) mit einem ModRewrite, das die URLs umschreibt. Das könnte die Ursache des Problems sein (weil es ja alle URLs im Code anfasst), allerdings läuft die gleiche Version des CMS mit dem gleichen ModRewrite auf einer anderen Website (auf einem anderen Server) und dort tritt das Problem nicht auf.
Daher mein Verdacht: fiese Servereinstellung.
 
ich ahne. ein &amp; wird nur zu einem & umgewandelt, wenn es im html code steht. gibt man es direkt in die url zeile des browsers ein passiert nichts. diese kennt nur die url-kodierung wie in beispiel c, entities werden nur im html quellcode umgewandelt.

wie gesagt, wenn es im quellcode steht passiert der identische request. da kann die servereinstellung noch so blöde sein, wenn es mit & geht, geht es auch mit &amp; im html.
 
Werbung:
Worüber wird denn HTML-Code über PHP ausgegeben? Gibt es da irgendeine von dir geschriebene Funktion die die Formate beeinflussen könnten? Einfach nur

HTML:
<a href="example.php?var=1&amp;var2=2">Link</a>

in eine .php-Datei zu schreiben sollte ja möglich sein?
 
Zurück
Oben