mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-18 22:06:57 +08:00
186 lines
10 KiB
HTML
186 lines
10 KiB
HTML
<!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> — <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"><?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">// 推荐用法<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 />// 不建议这么用<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>
|
||
</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"><?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>
|
||
</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> |