Von "Hallöchen miteinander!" zu "Hall%F6chen+miteinander%21"
Beat Strasser
- perl
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
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
»» $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
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
grr. Heisse Beat (m.), nicht Beate! :)
Oh so sorry :-O
Gruss Heiko