GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
WWW::Form::UrlEncoded(3) User Contributed Perl Documentation WWW::Form::UrlEncoded(3)

WWW::Form::UrlEncoded - parser and builder for application/x-www-form-urlencoded

    use WWW::Form::UrlEncoded qw/parse_urlencoded build_urlencoded/;
    
    my $query_string = "foo=bar&baz=param";
    my @params = parse_urlencoded($query_string);
    # ('foo','bar','baz','param')
    
    my $query_string = build_urlencoded('foo','bar','baz','param');
    # "foo=bar&baz=param";

WWW::Form::UrlEncoded provides application/x-www-form-urlencoded parser and builder. This module aims to have compatibility with other CPAN modules like HTTP::Body's urlencoded parser.

This module try to use WWW::Form::UrlEncoded::XS by default and fail to it, use WWW::Form::UrlEncoded::PP instead

WWW::Form::UrlEncoded parsed string in this rule.
1. Split application/x-www-form-urlencoded payload by "&" (U+0026) or ";" (U+003B)
2. Ready empty array to store "name" and "value"
3. For each divided string, apply next steps.
1. If first character of string is ' ' (U+0020 SPACE), remove it.
2. If string has "=", let name be substring from start to first "=", but excluding first "=", and remains to be value. If there is no strings after first "=", value to be empty string "". If first "=" is first character of the string, let key be empty string "". If string does not have any "=", all of the string to be key and value to be empty string "".
3. replace all "+" (U+002B) with ' ' (U+0020 SPACE).
4. unescape name and value. push them to the array.
4. return the array.

  'a=b&c=d'     => ["a","b","c","d"]
  'a=b;c=d'     => ["a","b","c","d"]
  'a=1&b=2;c=3' => ["a","1","b","2","c","3"]
  'a==b&c==d'   => ["a","=b","c","=d"]
  'a=b& c=d'    => ["a","b","c","d"]
  'a=b; c=d'    => ["a","b","c","d"]
  'a=b; c =d'   => ["a","b","c ","d"]
  'a=b;c= d '   => ["a","b","c"," d "]
  'a=b&+c=d'    => ["a","b"," c","d"]
  'a=b&+c+=d'   => ["a","b"," c ","d"]
  'a=b&c=+d+'   => ["a","b","c"," d "]
  'a=b&%20c=d'  => ["a","b"," c","d"]
  'a=b&%20c%20=d' => ["a","b"," c ","d"]
  'a=b&c=%20d%20' => ["a","b","c"," d "]
  'a&c=d'       => ["a","","c","d"]
  'a=b&=d'      => ["a","b","","d"]
  'a=b&='       => ["a","b","",""]
  '&'           => ["","","",""]
  '='           => ["",""]
  ''            => []

@param = parse_urlencoded($str:String)
parse $str and return Array that contains key-value pairs.
$param:ArrayRef = parse_urlencoded_arrayref($str:String)
parse $str and return ArrayRef that contains key-value pairs.
$string = build_urlencoded(@param)
$string = build_urlencoded(@param, $delim)
$string = build_urlencoded(\@param)
$string = build_urlencoded(\@param, $delim)
$string = build_urlencoded(\%param)
$string = build_urlencoded(\%param, $delim)
build urlencoded string from param. build_urlencoded accepts arrayref and hashref values.

  build_urlencoded( foo => 1, foo => 2);
  build_urlencoded( foo => [1,2] );
  build_urlencoded( [ foo => 1, foo => 2 ] );
  build_urlencoded( [foo => [1,2]] );
  build_urlencoded( {foo => [1,2]} );
    

If $delim parameter is passed, this function use it instead of using "&".

$string = build_urlencoded_utf8(...)
This function is almost same as "build_urlencoded". build_urlencoded_utf8 call "utf8::encode" for all parameters.

WWW_FORM_URLENCODED_PP

If true, WWW::Form::UrlEncoded force to load WWW::Form::UrlEncoded::PP.

CPAN already has some application/x-www-form-urlencoded parser modules like these.
URL::Encode
URL::Encode::XS
Text::QueryString

They does not fully compatible with WWW::Form::UrlEncoded. Handling of empty key-value and supporting separator characters are different.

Copyright (C) Masahiro Nagano.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Masahiro Nagano <kazeburo@gmail.com>
2022-04-07 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.