Axel Richter: $_GET --mehrere Werte

Beitrag lesen

Hallo,

Du brauchst eben keine Maskierung. Das Zeichen "&" ist durchaus erlaubt.

Ja, in einem URI, aber nicht in einem Attributwert vom Typ CDATA in HTML.

Erläuterung:

index.php?scha=Wert1&breti=Wert2&hoch=Wert3

^Das ist ein korrekter Wert für einen URI, aber wenn es im href-Attribut eines A-Elements steht:
<a href="index.php?scha=Wert1&breti=Wert2&hoch=Wert3" ...>
dann wäre es falsch, weil:
http://www.w3.org/TR/html4/struct/links.html#h-12.2:
<!ATTLIST A
...
  href        %URI;          #IMPLIED  -- URI for linked resource --
...
%URI:
<!ENTITY % URI "CDATA"
    -- a Uniform Resource Identifier,
       see [URI]
    -->

CDATA:
CDATA is a sequence of characters from the document character set and _may_ _include_ _character entities_.

Wichtig ist das "may include character entities".

Der Parser ermittelt also
<a href="index.php?scha=Wert1&breti=Wert2&hoch=Wert3" ...>
                             ^hier eine Entity &breti..., die es in der DTD natürlich nicht gibt. Somit wird ein Fehler erzeugt[1].

Bei:
<a href="index.php?scha=Wert1&amp;breti=Wert2&amp;hoch=Wert3" ...>
                             ^gibt es hier mit &amp; auch eine Entity. Diese ist aber laut DTD bekannt.

viele Grüße

Axel

[1]Die meisten HTML-Parser tolerieren diese Fehler. Der Validator aber nicht.