| PHP-HTTPBuildQuery documentation | view source | Contained in the PHP-HTTPBuildQuery distribution. |
PHP::HTTPBuildQuery - Data structures become form-encoded query strings
use PHP::HTTPBuildQuery qw(http_build_query);
my $query = http_build_query( { foo => {
bar => "baz",
quick => { "quack" => "schmack" },
},
},
);
# Query: "foo%5Bbar%5D=baz&foo%5Bquick%5D%5Bquack%5D=schmack"
# URL decoded: "foo[bar]=baz", "foo[quick][quack]=schmack"
PHP::HTTPBuildQuery implements PHP's http_build_query function in
Perl. It is used to form-encode Perl data structures in URLs, so that
PHP can read them on the receiving end.
http_build_query accepts one mandatory and two optional parameters:
http_build_query( $data, $prefix, $separator );
where
$data is a reference to the data structure (hash or array) $prefix is an array name for array elements at the top level. An
array at the top level, as in
http_build_query( [ 'foo', 'bar', 'baz' ]);
"0=foo&1=bar&2=baz"
http_build_query( [ 'foo', 'bar', 'baz' ], "var");
"var_0=foo&var_1=bar&var_2=baz"
$seperator is an optional argument separator (defaults to '&'),
used to separate the fields in the encoded string. $query = http_build_query( ['foo', 'bar'] );
# Query: "name_0=foo&name_1=bar"
$query = http_build_query( { foo => [ 'bar', 'baz' ] } );
# Query: "foo[0]=bar&foo[1]=baz" (not escaped for readability)
{ foo = "bar", baz => "quack" }>, don't be surprised if you get
the entries in a different order:
# Query: "baz=quack&foo=bar"
# PHP
$a = array(
'foo' => 'bar',
'baz',
);
# PHP
# PHP
print $a[0];
# prints: 'baz'
# PHP
print $a[foo];
# prints: 'bar'
http_build_query function would transform the Frankenstein
array above to
"foo=bar&0=baz"
"foo=bar&name_0=baz"
http_build_query creates a PHP-specific encoding format which
can't handle ']' or '[' characters in its keys (they're ok in hash
values, though). This module won't check against this case, it
will just generate form strings that won't be decodable afterwards. Make
sure to filter your data before passing it to http_build_query(). 0.03 2008/10/14
(ms) Added copyright notice
0.02 2008/10/03
(ms) Changed API to be more PHP-like after consulting with
Sara Golemon.
(ms) Added arrays
0.01 2008/10/03
(ms) Where it all began.
Thanks to the following Yahoos who provided advice, ideas and code: Sara Golemon, Rasmus Lerdorf, Evan Miller.
COPYRIGHT & LICENSE
Copyright (c) 2008 Yahoo! Inc. All rights reserved. The copyrights to the contents of this file are licensed under the Perl Artistic License (ver. 15 Aug 1997)
2008, Mike Schilli <cpan@perlmeister.com>
| PHP-HTTPBuildQuery documentation | view source | Contained in the PHP-HTTPBuildQuery distribution. |