urlencode und "form"encode - Leerzeichen
frankx
- php
Ahoi,
sehe ich das richtig, dass bei einem link Leerzeichen zu "%20" werden, bei einem get-Form zu "+" und beides von PHP als Leerzeichen interpretiert wird?
Gibts da noch mehr solcher Späße? Ich weiß mittlerweile (Sven erläuterte detailliert), dass im Formelement name="dies.das" von PHP zu "dies_das" konvertiert wird.
Dank und Gruß,
Ahoi,
sehe ich das richtig, dass bei einem link Leerzeichen zu "%20" werden, bei einem get-Form zu "+" und beides von PHP als Leerzeichen interpretiert wird?
<http://de.selfhtml.org/servercgi/cgi/formularverarbeitung.htm#datenstrom@title=Sone Sauerei>
Hotte ;-)
Hi,
sehe ich das richtig, dass bei einem link Leerzeichen zu "%20" werden,
Wenn sie dazu "werden", dann hat der Seitenautor geschlampt. Wenn in URLs solche Sonderzeichen vorkommen - dann sollten sie bereits kodiert sein, wenn sie in Links Verwendung finden.
bei einem get-Form zu "+" und beides von PHP als Leerzeichen interpretiert wird?
Gängige Systeme kommen mit beidem klar.
Ich weiß mittlerweile (Sven erläuterte detailliert), dass im Formelement name="dies.das" von PHP zu "dies_das" konvertiert wird.
Das ist wiederum eine Eigenart von PHP, da ein Variablenbezeichner keinen Punkt enthalten darf, da der schon als Verkettungsoperator Dienst tut.
Der Client überträgt, bspw. bei grafischen input-Buttons, nach wie den Parameternamen mit Punkt drin - PHP wandelt diesen dann selber beim initialen Bereitstellen der Request-Parameter in Unterstriche um.
Auch das ist historisch gewachsen - es war "notwendig" zu der Zeit, als register_globals=on noch gängig war, und somit aus deinem Parameternamen dies.das automatisch eine Variable $dies.das erstellt werden würde, die es aber wie gesagt in PHP nicht geben kann bzw. darf.
Hätte man das gleich von Anfang an so umgesetzt, wie es heute üblich ist - von aussen kommende Parameter finden sich in superglobalen Arrays wieder - dann hätte man sich diesen Murks sparen können, denn einem assoziativen Array-Index könnte es eigentlich egal sein, ob er einen Punkt enthält oder nicht.
MfG ChrisB