]> mj.ucw.cz Git - libucw.git/commitdiff
CGI: Added url_param_escape() which writes spaces as "+".
authorMartin Mares <mj@ucw.cz>
Fri, 20 Jul 2007 14:32:17 +0000 (16:32 +0200)
committerMartin Mares <mj@ucw.cz>
Fri, 20 Jul 2007 14:32:17 +0000 (16:32 +0200)
Use this function when genering self-ref URLs to save URL space.

lib/perl/CGI.pm

index bb2b14b09a1e5373e5fdb9b64540fd2c4b61fccf..79db231b06092d4b3e5f11e06316b125db598d67 100644 (file)
@@ -17,17 +17,26 @@ BEGIN {
        our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
        $VERSION = 1.0;
        @ISA = qw(Exporter);
-       @EXPORT = qw(&html_escape &url_escape &self_ref &self_form);
+       @EXPORT = qw(&html_escape &url_escape &url_param_escape &self_ref &self_form);
        @EXPORT_OK = qw();
        %EXPORT_TAGS = ();
 }
 
+### Escaping ###
+
 sub url_escape($) {
        my $x = shift @_;
        $x =~ s/([^-\$_.!*'(),0-9A-Za-z\x80-\xff])/"%".unpack('H2',$1)/ge;
        return $x;
 }
 
+sub url_param_escape($) {
+       my $x = shift @_;
+       $x = url_escape($x);
+       $x =~ s/%20/+/g;
+       return $x;
+}
+
 sub html_escape($) {
        my $x = shift @_;
        $x =~ s/&/&amp;/g;
@@ -155,7 +164,7 @@ sub make_out_args($) {
 sub self_ref(@) {
        my %h = @_;
        my $out = make_out_args(\%h);
-       return "?" . join(':', map { "$_=" . url_escape($out->{$_}) } sort keys %$out);
+       return "?" . join(':', map { "$_=" . url_param_escape($out->{$_}) } sort keys %$out);
 }
 
 sub self_form(@) {