From 8cb595b032fadcee689dcdfa64d693f7d44de420 Mon Sep 17 00:00:00 2001 From: Ronen Botzer Date: Mon, 10 May 2010 22:34:15 -0700 Subject: [PATCH] Documented parse_str equivalent. --- strings/parse_str.markdown | 37 +++++++++++++++++++++++++++ strings/parse_str.markdown.unfinished | 16 ------------ 2 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 strings/parse_str.markdown delete mode 100644 strings/parse_str.markdown.unfinished diff --git a/strings/parse_str.markdown b/strings/parse_str.markdown new file mode 100644 index 0000000..18ca235 --- /dev/null +++ b/strings/parse_str.markdown @@ -0,0 +1,37 @@ +# parse_str + +{{notice: + This function's solution requires the Addressable gem. +}} + +PHP's `parse_str` function takes a URL-encoded query string and parses it +into an associative array. The Ruby equivalent leverages Addressable's +`query_values` method. + +{{code:php + parse_str("foo=bar", $output); + var_export($output); + // => array('foo' => 'bar') + parse_str("foo[]=1&foo[]=2&foo[]=3", $output); + var_export($output); + // array('foo' => array(0 => '1', 1 => '2', 2 => '3')) + parse_str("foo[a]=1&foo[b]=2", $output); + var_export($output); + // => array('foo' => array('a' => '1', 'b' => '2')) +}} + +{{code:ruby + require 'addressable/uri' + Addressable::URI.parse("/?foo=bar").query_values() + // => {"foo"=>"bar"} + Addressable::URI.parse("/?foo[]=1&foo[]=2&foo[]=3").query_values() + // => {"foo"=>["1", "2", "3"]} + Addressable::URI.parse("/?foo[a]=1&foo[b]=2").query_values() + // => {"foo"=>{"a"=>"1", "b"=>"2"}} +}} + + +{{related: + url/http_build_query + strings/parse_url +}} diff --git a/strings/parse_str.markdown.unfinished b/strings/parse_str.markdown.unfinished deleted file mode 100644 index 02f9267..0000000 --- a/strings/parse_str.markdown.unfinished +++ /dev/null @@ -1,16 +0,0 @@ -# parse_str - -{{code:php -}} - -{{code:ruby -}} - - -{{related: - strings/parse_url - strings/pathinfo - url/html_entity_decode - strings/get_magic_quotes_gpc - url/urldecode -}}