fce param
Zdenek Lukes
lukes2 na kn.vutbr.cz
Středa Srpen 13 20:50:46 MEST 2003
Uz je mi to jasne, mockrat diky za radu.
Jinak pro vysvetleni jsem predaval parametry z PHP do perlu....
Dik Zdenek
----- Original Message -----
From: "Honza Pazdziora" <adelton na informatics.muni.cz>
To: "Multiple recipients of list PERL" <perl na muni.cz>
Sent: Wednesday, August 13, 2003 7:33 PM
Subject: Re: fce param
> On Wed, Aug 13, 2003 at 06:46:18PM +0200, Zdenek Lukes wrote:
> > Mam takovy problem s fci param. Pouzivam ji ve spojeni PHP a GCI, kdy
pomici php predavam parametry CGI (perl). Vse funguje jak mam, jenze kdyz
chci predat retezec, ktery ma v sobe "+" tak mi ho prevede na znamk mezera.
> >
> > Nevite nekdo jak toto vyresit, ci jak to obejit abych mohl predavat
parametry i se znamenkem "+"
>
> Neni mi uplne jasne, co kam kdo predava (PHP do Perlu nebo Perl do
> PHP), faktem ovsem zustava, ze znak + (plus) je v query casti URI
> zkratkou a ekvivalentem pro mezeru. Pokud tedy chcete mit v hodnote
> parametru mezeru (a param funkce z CGI.pm vraci "ciste" hodnoty, pote,
> co je odescapuje), pouzijte pri zapisu budto + nebo %20. Pokud tam
> naopak chcete mit plus, pouzijte %2B.
>
> Priklad:
>
> http://www.site.com/script.pl?mm=jezek+a%20krtek
>
> V takto odkazovanem skriptu skriptu param("mm") vrati
> hodnotu "jezek a krtek".
>
> http://www.site.com/script.pl?mm=jezek+%2B%20krtek
>
> V takto odkazovanem skriptu param("mm") vrati hodnotu
> "jezek + krtek".
>
> http://www.site.com/script.pl?mm=jezek+%2B&slon=%20krtek
>
> V takto odkazovanem skriptu param("mm") vrati hodnotu
> "jezek +" a param("slon") vrati " krtek". Samozrejme v HTML je
> nutne takoveto URI zapsat s escapovanym ampersandem, tedy
>
> http://www.site.com/script.pl?mm=jezek+%2B&slon=%20krtek
>
> Pokud jde o to, ze mate ty hodnoty (retezce "jezek + krtek", a tak
> dale), a chcete zpusob, jak z toho udelat hodnoty, ktere muzete
> placnout do URL, tak pouzijte URI::Escape:
>
> use URI::Escape;
> %parametry = (
> 'mm' => 'jezek a krtek',
> 'slon' => 'jezek + krtek',
> 'zizala a +plusko' => '--=--',
> );
> my $url = 'http://www.site.com/script.pl';
> my $firsttime = 1;
> for (keys %parametry) {
> $url .= ($firsttime ? '?' : '&')
> . uri_escape($_)
> . '='
> . uri_escape($parametry{$_});
> $firsttime = 0;
> }
> # Pokud to $url chcete pouzit primo v HTML, dejte misto '&'
> # retezec '&', nebo provedte
> $url =~ s/&/&/g;
> # Se znaky < a > neni treba si lamat hlavu, protoze ty
> # zpracoval uz uri_escape.
>
> Doufam, ze to pomuze,
>
> --
> ------------------------------------------------------------------------
> Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
> .project: Perl, mod_perl, DBI, Oracle, auth. WWW servers, XML/XSL, ...
> Only self-confident people can be simple.
Další informace o konferenci Perl