phpbar.de logo

Mailinglisten-Archive

[php] Umkehrfunktion von parse_str?

[php] Umkehrfunktion von parse_str?

Martin Ramsch m.ramsch_(at)_computer.org
Fri, 28 May 1999 09:58:08 +0200


Manuel Hossfeld schrieb am Donnerstag, den 27. Mai 1999:
> BTW: Weiß eigentlich jemand, wo genau der Unterschied zwischen
> urlencode() und rawurlencode() liegt?

Die Frage hab' ich mir auch gestellt, als ich die beiden Funktionen
entdeckt hatte. :)

> Die Doku liest sich an der Stelle ja sinngemäß wie "bei urlencode
> werden spaces durch + codiert, wohingegen bei rawurlencode space
> durch + codiert werden"... Häh?

rawurlencode kodiert Leerzeichen als %20.  Das ist der einzige
Unterschied zu urlencode, wo ein Plus erzeugt würde.

Zum Testen:
  for($i=0; $i<=255; $i++) {
    $c = chr($i); $u1 = urlencode($c); $u2 = rawurlencode($c);
    if ($i<32 or $i>=127 and $i<160) { $c = " "; }
    printf("%3d %s : %-3s %-3s %s\n", $i, $c, $u1, $u2, $u1==$u2);
  }

Hintergrund:
  Die Kodierung von Leerzeichen als Plus war eigentlich nie so per
  Standard vorgesehen, aber Mosaic, einer der ersten WWW-Browser,
  hatte es so implementiert - wahrscheinlich, damit derart kodierte
  URLs etwas besser lesbar sind.
  Die im Standard RFC 1738 definierte URL-Kodierung hat jedenfalls
  diese Sonderregel für Spaces nicht.

  Wenn man also nicht sicher weiß, nach welcher der beiden
  Konventionen der Empfänger eine URL-Kodierung dekodieren wird,
  sollte man sicherheitshalber "rawurlencode" verwenden, denn
  dann kann beim Dekodieren nichts schiefgehen.

Ciao,
  Martin
-- 
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ >
PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26  E4 EC 80 58 7B 31 3A D7

  "A rainy day is as beautiful as a sunny one, only in another way"


php::bar PHP Wiki   -   Listenarchive