Beat Strasser: Von "Hallöchen miteinander!" zu "Hall%F6chen+miteinander%21"

Hallo

Ein Browser wandelt doch die Werte in einem Formular vor dem Absenden um. Abstaende werden zu einem '+', das Gleichheitszeichen wird zu "%3D" und Umlaute u.ae. werden auch irgendwie umgewandelt...
Dasselbe sollte ich in einem Perl-Script auch machen, doch habe keine Ahnung wie. Ich habe zwar die Umkehrfunktion, aber ich steige nicht so ganz beim Befehl pack und so:
  
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

Weiss jemand, wie ich das anstellen koennte? Es sollen ja auch nicht alle Buchstaben umgewandelt werden, sondern nur Sonderzeichen...

Danke im Voraus!!

Gruss,
Beat

  1. Hallo Beat

    Ich weiss zwar nicht genau wied der Bfehl heisst bei Perl, in ASP, bez. PHP3 gibts einen namens url_encode/url_decode ....

    Vieleicht hilfts was ;)

    Grüessli

    ano

  2. »»   $value =~ tr/+/ /;
    »»   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

    Hi Beate

    das gegenstueck lautet.

    $value=~
    s/([^a-zA-Z0-9 ])/sprintf("%%%x",ord($1))/eg;
    $value=~tr/ /+/;

    Hier werden alle Buchstaben und Zahlen ausgespart nur die anderen Zeichen werden in  hex und fuehrenden % umgewandelt (sprintf).

    Gruß
    Heiko

    1. Hi Heiko

      Hi Beate

      grr. Heisse Beat (m.), nicht Beate! :)

      das gegenstueck lautet.

      $value=~
      s/([^a-zA-Z0-9 ])/sprintf("%%%x",ord($1))/eg;
      $value=~tr/ /+/;

      Hier werden alle Buchstaben und Zahlen ausgespart nur die anderen Zeichen werden in  hex und fuehrenden % umgewandelt (sprintf).

      Funktioniert prima!

      Merci vielmals!

      Gruss,
      Beat

      1. grr. Heisse Beat (m.), nicht Beate! :)

        Oh so sorry :-O

        Gruss Heiko