tobeit: HTML-Zeichen aus GET-String in Ascii

Hallo liebe Gemeinde,

such mir mal wieder die Finger wund und noch nich fündig geworden! Habe folgendes Anliegen und zwar übergeb ich per GET-Methode meine Formulardaten und zieh sie in einem PHP-Skript wieder raus, Problem dabei ist, dass die Zeichen "%" samt Hex-Wert und "+" wieder in Ascii umgewandelt werden sollten. Habe dafür zwar schon eine Lösung in C vorliegen und könnte diese wohl auch nach PHP übernehmen, jedoch wäre es mir recht wenn PHP selbst schon dafür Funktionen vorgesehen hätte ... htmlspecialchars und htmlentities scheints nich zu sein oder setz ich diese nur falsch ein??

Beispiel:

<input type="text" name="bis" value="00:00">

...

var = $_GET['bis'];
echo $var;

liefert mir ...

00%3A00

gewünscht ...

var mit dem Inhalt "00:00"

Danke und Grüße

tobeit

  1. Hello,

    <input type="text" name="bis" value="00:00">

    ...

    var = $_GET['bis'];
    echo $var;

    liefert mir ...

    00%3A00

    gewünscht ...

    var mit dem Inhalt "00:00"

    Das irritiert mich nun ein wenig.
    Sendest Du denn den request auch bestimmt mit GET?

    Dann werden die Parameter vom Browser automatisch urlencoded. Aus : wird dann eben %3A

    PHP sollte aber GET-Parameter automatisch wieder decodieren und im GET-Array als Roh-Daten zur Verfügung stellen (mit Ausnahem von Magic Quotes ggf.).

    Wenn Du die Daten nun "zu Fuß" wieder decodieren willst, dann nimm urldecode() oder rawurldecode(). Das sollte aber, wie gesagt, gar nicht nötig sein.

    Ich kann jetzt in der Konfoguration (ini) auch nichts finden, dass man das ausschalten könnte.

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    1. Ähem, ja man müsste zusätzlich noch erwähnen, dass ich die Daten auch nicht wirklich per $_GET mir geholt habe, sondern über einen kleinen Umweg und zwar mit $_SERVER[QUERY_STRING] und den String dann von Hand zerlege, da ich einige Parameter habe, die den selben Namen verwenden! Mir ist dann auch aufgefallen, dass PHP bei $_GET die Zeichen selbst dekodiert nur eben bei $_SERVER[QUERY_STRING] nicht! Werd mir mal Deinen Vorschlag zur Gemüte führen und meinen Code entsprechend ergänzen, dank Dir schon mal recht herzlich ...

      Grüße

      1. echo $begrüßung;

        Ähem, ja man müsste zusätzlich noch erwähnen, dass ich die Daten auch nicht wirklich per $_GET mir geholt habe, sondern über einen kleinen Umweg und zwar mit $_SERVER[QUERY_STRING] und den String dann von Hand zerlege, da ich einige Parameter habe, die den selben Namen verwenden!

        Wenn du $_SERVER[QUERY_STRING statt $_SERVER['QUERY_STRING']] schreibst, nehme ich auch an, dass dir vielleicht nicht geläufig ist, dass gleiche Namen kein Problem darstellen, wenn sie auf [ enden]. Denn dann legt PHP ein Array in $_GET/$_POST an.

        Übrigens: Der Unterschied zwischen rawurldecode() und urldecode() offenbart sich deutlicher, wenn man sich die Handbuchseiten ihrer encode-Pendants anschaut. Sie werden nämlich für unterschiedliche Teile einer URL verwendet. Für deinen Fall ist urldecode() die passende Funktion.

        echo "$verabschiedung $name";