Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

CGI-encoded quote characters

by Anonymous Monk
on Oct 10, 2001 at 21:23 UTC ( #118059=perlquestion: print w/replies, xml ) Need Help??

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

How can I pass the URL within query string together and translate the double quote into CGI-encoded quote characters. such as http://www.server.com/index.pl?q="att+dsl" became http://www.server.com/index.pl?q=%22att+dsl%22 within URL, how?

Replies are listed 'Best First'.
Re: CGI-encoded quote characters
by echo (Pilgrim) on Oct 10, 2001 at 21:31 UTC
    Here's one way:

    use URI::Escape; my $url = 'http://www.server.com/index.pl?' . uri_escape('q="att+dsl +"');
Re: CGI-encoded quote characters
by projekt21 (Friar) on Oct 10, 2001 at 21:37 UTC

    As you may already use CGI; you can do it with (updated, thanks to echo):

    my $escaped_url = $url . CGI::escape($query_string);

    alex pleiner <alex@zeitform.de>
    zeitform Internet Dienste

      Be careful not to escape the whole URL though, you want to leave those slashes intact. Only the query string itself should be escaped.

      If you are already parsing the parameters with CGI it does it automatically.

      I tend to do $cgi->Vars() which returns a hash of all parameters to the script. It returns the parameters of the query string if it is a GET or the form if it is a POST. I wrote a little test script:

      #!/usr/bin/perl use CGI; my $cgi = new CGI; my %form = $cgi->Vars(); print "Content-type:text/html\n\n"; print "<html><body>\n"; foreach my $key(keys %form) { print "$key = $form{$key}<br>\n"; } print "</body></html>\n"; exit;

      I fed it this url:
      urltest.cgi?param=%22something%22¶m2=something_else

      It printed "something" something_else. The point is that CGI will handle this automatically.

        If you reread the question, you will see, that Anonymous Monk asked for tips to ENCODE the query string...

        alex pleiner <alex@zeitform.de>
        zeitform Internet Dienste

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://118059]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (6)
As of 2019-05-25 03:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you enjoy 3D movies?



    Results (151 votes). Check out past polls.

    Notices?
    • (Sep 10, 2018 at 22:53 UTC) Welcome new users!