URL::Encode - Encoding and decoding of application/x-www-form-urlencoded encoding.
$octets = url_decode($octets);
$string = url_decode_utf8($octets);
$octets = url_encode($octets);
$octets = url_encode_utf8($string);
$params = url_params_flat($octets [, $utf8 = false]);
$params = url_params_mixed($octets [, $utf8 = false]);
$params = url_params_multi($octets [, $utf8 = false]);
url_params_each($octets, $callback [, $utf8 = false]);
$octets = url_params_build($params [, $utf8 = false [, delim = '&'] ]);This module provides functions to encode and decode strings into and from the application/x-www-form-urlencoded encoding.
The application/x-www-form-urlencoded format encodes a ordered data sets of pairs consisting of a name and a value, with pairs seperated by ampersand or semicolon and names and values seperated by the equal sign. Space characters are replaced with plus sign and any characters not in the unreserved character set is encoded using the percent-encoding scheme also used for resource identifiers. A percent-encoded octet is encoded as a character triplet, consisting of the percent character "%" followed by the two hexadecimal digits representing that octet's numeric value.
The unreserved character set includes the uppercase and lowercase letters, decimal digits, hyphen, period, underscore, and tilde.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
- . _ ~$octets = url_decode($octets);Returns a decoded representation of the given URL-encoded $octets as an octet string.
$string = url_decode_utf8($octets);Returns a decoded representation of the given URL-encoded $octets in UTF-8 encoding as a character string.
$octets = url_encode($octets);Returns a URL-encoded representation of the given $octets as an octet string.
$octets = url_encode_utf8($string);Returns a URL-encoded representation of $string in UTF-8 encoding as an octet string.
$params = url_params_flat($octets);
$params = url_params_flat($octets, $utf8);Parses a URL-encoded data set of name/value pairs from the given octets. Returns an ARRAY reference containing the URL-decoded name/value pairs in order.
$params = url_params_flat('foo=A&foo=B&bar=C');
$params; # [ foo => 'A', foo => 'B', bar => 'C' ]$params = url_params_mixed($octets);
$params = url_params_mixed($octets, $utf8);Parses a URL-encoded data set of name/value pairs from the given octets. Returns a HASH reference containing the URL-decoded name/value pairs. Multiple occurrences of a parameter will result in an ARRAY reference holding all the values for that parameter in order.
$params = url_params_mixed('foo=A&foo=B&bar=C');
$params; # { foo => [ 'A', 'B' ], bar => 'C' }$params = url_params_multi($octets);
$params = url_params_multi($octets, $utf8);Parses a URL-encoded data set of name/value pairs from the given octets. Returns a HASH reference containing the URL-decoded name/value pairs. Values are stored in an ARRAY reference.
$params = url_params_multi('foo=A&foo=B&bar=C');
$params; # { foo => [ 'A', 'B' ], bar => [ 'C' ] }url_params_each($octets, $callback);
url_params_each($octets, $callback, $utf8);Parses a URL-encoded data set of name/value pairs from the given octets. Invokes the given callback for each URL-decoded name/value pair.
$callback = sub {
my ($name, $value) = @_;
};
url_params_each($octets, $callback);$octets = url_params_build($params);
$octets = url_params_build($params, $utf8);
$octets = url_params_build($params, $utf8, $delim);Builds a URL-encoded string from the given ARRAY or HASH reference containing URL-decoded name/value pairs. Multiple occurrences of a parameter may be specified as an ARRAY reference of values in order. Keys of a HASH reference will be sorted for consistency.
$octets = url_params_build({ foo => [ 'A', 'B' ], bar => 'C' });
$octets; # bar=C&foo=A&foo=B
$octets = url_params_build([ foo => 'A', foo => 'B', bar => 'C' ]);
$octets; # foo=A&foo=B&bar=CNone by default. All functions can be exported using the :all tag or individually.
- (F) Usage: %s
-
Subroutine called with wrong number of arguments.
- (F) Wide character in octet string
- (F) Malformed UTF-8 in URL-decoded octets
The URL::Encode::XS module provides faster C/XS implementations of the functions found in this module. This module will automatically use URL::Encode::XS if it's installed.
Benchmarking url_decode() PP vs XS:
Rate PP XS
PP 507520/s -- -92%
XS 6389812/s 1159% --
Benchmarking url_encode() PP vs XS:
Rate PP XS
PP 119866/s -- -98%
XS 7214089/s 5918% --
Benchmarking url_params_mixed() PP vs XS:
Rate PP XS
PP 4450/s -- -95%
XS 95015/s 2035% --
Benchmarking URL::Encode::XS vs CGI::Deurl::XS
Rate CGI::Deurl::XS URL::Encode::XS
CGI::Deurl::XS 51932/s -- -48%
URL::Encode::XS 99444/s 91% --- URL::Encode::XS
-
XS implementation of
URL::Encode. - CGI::Deurl::XS
Please report any bugs by email to bug-url-encode at rt.cpan.org, or through the web interface at http://rt.cpan.org/Public/Dist/Display.html?Name=URL-Encode. You will be automatically notified of any progress on the request by the system.
This is open source software. The code repository is available for public review and contribution under the terms of the license.
http://github.com/chansen/p5-url-encode
git clone http://github.com/chansen/p5-url-encodeChristian Hansen chansen@cpan.org
Copyright 2011-2014 by Christian Hansen.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.