uTools-Manuals/docs/php/parse_str.html
2019-04-28 19:00:34 +08:00

186 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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>将字符串解析成多个变量</title>
</head>
<body class="docs"><div id="layout">
<div id="layout-content"><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> &mdash; <span class="dc-title">将字符串解析成多个变量</span></p>
</div>
<div class="refsect1 description" id="refsect1-function.parse-str-description">
<h3 class="title">说明</h3>
<div class="methodsynopsis dc-description">
<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>
] ) : <span class="type"><span class="type void">void</span></span></div>
<p class="para rdfs-comment">
如果 <code class="parameter">encoded_string</code> 是 URL 传递入的查询字符串query string则将它解析为变量并设置到当前作用域如果提供了 <code class="parameter">result</code> 则会设置到该数组里 )。
</p>
</div>
<div class="refsect1 parameters" id="refsect1-function.parse-str-parameters">
<h3 class="title">参数</h3>
<p class="para">
<dl>
<dt>
<code class="parameter">encoded_string</code></dt>
<dd>
<p class="para">
输入的字符串。
</p>
</dd>
<dt>
<code class="parameter">result</code></dt>
<dd>
<p class="para">
如果设置了第二个变量 <code class="parameter">result</code>
变量将会以数组元素的形式存入到这个数组,作为替代。
</p>
<div class="warning"><strong class="warning">Warning</strong>
<p class="para">
极度<em class="emphasis">不建议</em> 在没有 <code class="parameter">result</code> 参数的情况下使用此函数,并且在 PHP 7.2 中将<em class="emphasis">废弃</em>不设置参数的行为。
</p>
<p class="para">
在函数中动态设置变量会和 <a href="ini.core.html#ini.register-globals" class="link">register_globals</a> 有同样的问题。
</p>
<p class="para">
阅读「安全」中 <a href="security.globals.html" class="link">使用 Register Globals</a> 的章节,解释了它为什么是危险的。
</p>
</div>
</dd>
</dl>
</p>
</div>
<div class="refsect1 returnvalues" id="refsect1-function.parse-str-returnvalues">
<h3 class="title">返回值</h3>
<p class="para">
没有返回值。
</p>
</div>
<div class="refsect1 changelog" id="refsect1-function.parse-str-changelog">
<h3 class="title">更新日志</h3>
<p class="para">
<table class="doctable informaltable">
<thead>
<tr>
<th>版本</th>
<th>说明</th>
</tr>
</thead>
<tbody class="tbody">
<tr>
<td>7.2.0</td>
<td>
不带第二个参数的情况下使用 <span class="function"><strong>parse_str()</strong></span> 会产生
<strong><code>E_DEPRECATED</code></strong> 警告。
</td>
</tr>
</tbody>
</table>
</p>
</div>
<div class="refsect1 examples" id="refsect1-function.parse-str-examples">
<h3 class="title">范例</h3>
<p class="para">
<div class="example" id="example-5931">
<p><strong>Example #1 <span class="function"><strong>parse_str()</strong></span> 的使用</strong></p>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$str&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"first=value&amp;arr[]=foo+bar&amp;arr[]=baz"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">//&nbsp;推荐用法<br /></span><span style="color: #0000BB">parse_str</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$output</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$output</span><span style="color: #007700">[</span><span style="color: #DD0000">'first'</span><span style="color: #007700">];&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;value<br /></span><span style="color: #007700">echo&nbsp;</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">];&nbsp;</span><span style="color: #FF8000">//&nbsp;foo&nbsp;bar<br /></span><span style="color: #007700">echo&nbsp;</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">];&nbsp;</span><span style="color: #FF8000">//&nbsp;baz<br /><br />//&nbsp;不建议这么用<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&nbsp;</span><span style="color: #0000BB">$first</span><span style="color: #007700">;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;value<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">];&nbsp;</span><span style="color: #FF8000">//&nbsp;foo&nbsp;bar<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">];&nbsp;</span><span style="color: #FF8000">//&nbsp;baz<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
</div>
</p>
<p class="para">
由于 PHP 的变量名不能带「点」和「空格」,所以它们会被转化成下划线。
用本函数带 <code class="parameter">result</code> 参数,也会应用同样规则到数组的键名。
<div class="example" id="example-5932">
<p><strong>Example #2 <span class="function"><strong>parse_str()</strong></span> 名称改写</strong></p>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />parse_str</span><span style="color: #007700">(</span><span style="color: #DD0000">"My&nbsp;Value=Something"</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$My_Value</span><span style="color: #007700">;&nbsp;</span><span style="color: #FF8000">//&nbsp;Something<br /><br /></span><span style="color: #0000BB">parse_str</span><span style="color: #007700">(</span><span style="color: #DD0000">"My&nbsp;Value=Something"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$output</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$output</span><span style="color: #007700">[</span><span style="color: #DD0000">'My_Value'</span><span style="color: #007700">];&nbsp;</span><span style="color: #FF8000">//&nbsp;Something<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
</div>
</p>
</div>
<div class="refsect1 notes" id="refsect1-function.parse-str-notes">
<h3 class="title">注释</h3>
<blockquote class="note"><p><strong class="note">Note</strong>:
<p class="para">
所有创建的变量(或者在设置第二个参数的情况下,返回数组里的值)
都已经 <span class="function"><a href="urldecode.html" class="function">urldecode()</a></span> 了。
</p>
</p></blockquote>
<blockquote class="note"><p><strong class="note">Note</strong>:
<p class="para">
要获取当前的 <em>QUERY_STRING</em>,可以使用
<var class="varname"><var class="varname"><a href="reserved.variables.server.html" class="classname">$_SERVER['QUERY_STRING']</a></var></var> 变量。
所以你可能想要阅读
<a href="language.variables.external.html" class="link">来自 PHP 之外的变量</a>这个章节。
</p>
</p></blockquote>
<blockquote class="note"><p><strong class="note">Note</strong>:
<p class="para">
本函数受 <a href="info.configuration.html#ini.magic-quotes-gpc" class="link">magic_quotes_gpc</a> 设置的影响,
<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> 在 PHP 中填充变量相似, <span class="function"><strong>parse_str()</strong></span> 也使用了同样的机制。
</p>
</p></blockquote>
</div>
<div class="refsect1 seealso" id="refsect1-function.parse-str-seealso">
<h3 class="title">参见</h3>
<p class="para">
<ul class="simplelist">
<li class="member"><span class="function"><a href="parse_url.html" class="function" rel="rdfs-seeAlso">parse_url()</a> - 解析 URL返回其组成部分</span></li>
<li class="member"><span class="function"><a href="pathinfo.html" class="function" rel="rdfs-seeAlso">pathinfo()</a> - 返回文件路径的信息</span></li>
<li class="member"><span class="function"><a href="http_build_query.html" class="function" rel="rdfs-seeAlso">http_build_query()</a> - 生成 URL-encode 之后的请求字符串</span></li>
<li class="member"><span class="function"><a href="urldecode.html" class="function" rel="rdfs-seeAlso">urldecode()</a> - 解码已编码的 URL 字符串</span></li>
</ul>
</p>
</div>
</div></div></div></body></html>