<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Parses the string into variables</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="function.ord.html">ord</a></div> <div class="next" style="text-align: right; float: right;"><a href="function.print.html">print</a></div> <div class="up"><a href="ref.strings.html">String Functions</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="function.parse-str" class="refentry"> <div class="refnamediv"> <h1 class="refname">parse_str</h1> <p class="verinfo">(PHP 4, PHP 5, PHP 7)</p><p class="refpurpose"><span class="refname">parse_str</span> — <span class="dc-title">Parses the string into variables</span></p> </div> <div class="refsect1 description" id="refsect1-function.parse-str-description"> <h3 class="title">Description</h3> <div class="methodsynopsis dc-description"> <span class="type"><span class="type void">void</span></span> <span class="methodname"><strong>parse_str</strong></span> ( <span class="methodparam"><span class="type">string</span> <code class="parameter">$encoded_string</code></span> [, <span class="methodparam"><span class="type">array</span> <code class="parameter reference">&$result</code></span> ] )</div> <p class="para rdfs-comment"> Parses <code class="parameter">encoded_string</code> as if it were the query string passed via a URL and sets variables in the current scope (or in the array if <code class="parameter">result</code> is provided). </p> </div> <div class="refsect1 parameters" id="refsect1-function.parse-str-parameters"> <h3 class="title">Parameters</h3> <p class="para"> <dl> <dt> <code class="parameter">encoded_string</code></dt> <dd> <p class="para"> The input string. </p> </dd> <dt> <code class="parameter">result</code></dt> <dd> <p class="para"> If the second parameter <code class="parameter">result</code> is present, variables are stored in this variable as array elements instead. </p> <div class="warning"><strong class="warning">Warning</strong> <p class="para"> Using this function without the <code class="parameter">result</code> parameter is highly <em class="emphasis">DISCOURAGED</em> and <em class="emphasis">DEPRECATED</em> as of PHP 7.2. </p> <p class="para"> Dynamically setting variables in function's scope suffers from exactly same problems as <a href="ini.core.html#ini.register-globals" class="link">register_globals</a>. </p> <p class="para"> Read section on security of <a href="security.globals.html" class="link">Using Register Globals</a> explaining why it is dangerous. </p> </div> </dd> </dl> </p> </div> <div class="refsect1 returnvalues" id="refsect1-function.parse-str-returnvalues"> <h3 class="title">Return Values</h3> <p class="para"> No value is returned. </p> </div> <div class="refsect1 changelog" id="refsect1-function.parse-str-changelog"> <h3 class="title">Changelog</h3> <p class="para"> <table class="doctable informaltable"> <thead> <tr> <th>Version</th> <th>Description</th> </tr> </thead> <tbody class="tbody"> <tr> <td>7.2.0</td> <td> Usage of <span class="function"><strong>parse_str()</strong></span> without a second parameter now emits an <strong><code>E_DEPRECATED</code></strong> notice. </td> </tr> </tbody> </table> </p> </div> <div class="refsect1 examples" id="refsect1-function.parse-str-examples"> <h3 class="title">Examples</h3> <p class="para"> <div class="example" id="example-6060"> <p><strong>Example #1 Using <span class="function"><strong>parse_str()</strong></span></strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br />$str </span><span style="color: #007700">= </span><span style="color: #DD0000">"first=value&arr[]=foo+bar&arr[]=baz"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Recommended<br /></span><span style="color: #0000BB">parse_str</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">, </span><span style="color: #0000BB">$output</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$output</span><span style="color: #007700">[</span><span style="color: #DD0000">'first'</span><span style="color: #007700">]; </span><span style="color: #FF8000">// value<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$output</span><span style="color: #007700">[</span><span style="color: #DD0000">'arr'</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">]; </span><span style="color: #FF8000">// foo bar<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$output</span><span style="color: #007700">[</span><span style="color: #DD0000">'arr'</span><span style="color: #007700">][</span><span style="color: #0000BB">1</span><span style="color: #007700">]; </span><span style="color: #FF8000">// baz<br /><br />// DISCOURAGED<br /></span><span style="color: #0000BB">parse_str</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$first</span><span style="color: #007700">; </span><span style="color: #FF8000">// value<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]; </span><span style="color: #FF8000">// foo bar<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]; </span><span style="color: #FF8000">// baz<br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </div> </p> <p class="para"> Because variables in PHP can't have dots and spaces in their names, those are converted to underscores. Same applies to naming of respective key names in case of using this function with <code class="parameter">result</code> parameter. <div class="example" id="example-6061"> <p><strong>Example #2 <span class="function"><strong>parse_str()</strong></span> name mangling</strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br />parse_str</span><span style="color: #007700">(</span><span style="color: #DD0000">"My Value=Something"</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$My_Value</span><span style="color: #007700">; </span><span style="color: #FF8000">// Something<br /><br /></span><span style="color: #0000BB">parse_str</span><span style="color: #007700">(</span><span style="color: #DD0000">"My Value=Something"</span><span style="color: #007700">, </span><span style="color: #0000BB">$output</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$output</span><span style="color: #007700">[</span><span style="color: #DD0000">'My_Value'</span><span style="color: #007700">]; </span><span style="color: #FF8000">// Something<br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </div> </p> </div> <div class="refsect1 notes" id="refsect1-function.parse-str-notes"> <h3 class="title">Notes</h3> <blockquote class="note"><p><strong class="note">Note</strong>: <p class="para"> All variables created (or values returned into array if second parameter is set) are already <span class="function"><a href="function.urldecode.html" class="function">urldecode()</a></span>d. </p> </p></blockquote> <blockquote class="note"><p><strong class="note">Note</strong>: <p class="para"> To get the current <em>QUERY_STRING</em>, you may use the variable <var class="varname"><var class="varname"><a href="reserved.variables.server.html" class="classname">$_SERVER['QUERY_STRING']</a></var></var>. Also, you may want to read the section on <a href="language.variables.external.html" class="link">variables from external sources</a>. </p> </p></blockquote> <blockquote class="note"><p><strong class="note">Note</strong>: <p class="para"> The <a href="info.configuration.html#ini.magic-quotes-gpc" class="link">magic_quotes_gpc</a> setting affects the output of this function, as <span class="function"><strong>parse_str()</strong></span> uses the same mechanism that PHP uses to populate the <var class="varname"><var class="varname"><a href="reserved.variables.get.html" class="classname">$_GET</a></var></var>, <var class="varname"><var class="varname"><a href="reserved.variables.post.html" class="classname">$_POST</a></var></var>, etc. variables. </p> </p></blockquote> </div> <div class="refsect1 seealso" id="refsect1-function.parse-str-seealso"> <h3 class="title">See Also</h3> <p class="para"> <ul class="simplelist"> <li class="member"><span class="function"><a href="function.parse-url.html" class="function" rel="rdfs-seeAlso">parse_url()</a> - Parse a URL and return its components</span></li> <li class="member"><span class="function"><a href="function.pathinfo.html" class="function" rel="rdfs-seeAlso">pathinfo()</a> - Returns information about a file path</span></li> <li class="member"><span class="function"><a href="function.http-build-query.html" class="function" rel="rdfs-seeAlso">http_build_query()</a> - Generate URL-encoded query string</span></li> <li class="member"><span class="function"><a href="function.urldecode.html" class="function" rel="rdfs-seeAlso">urldecode()</a> - Decodes URL-encoded string</span></li> </ul> </p> </div> </div><hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="function.ord.html">ord</a></div> <div class="next" style="text-align: right; float: right;"><a href="function.print.html">print</a></div> <div class="up"><a href="ref.strings.html">String Functions</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>