-
Notifications
You must be signed in to change notification settings - Fork 105
/
Copy pathparse-str.xml
201 lines (186 loc) · 5.41 KB
/
parse-str.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 5d7f95f58f99eb121d25348370ee6146c0442b0c Maintainer: daijie Status: ready -->
<!-- CREDITS: Luffy -->
<refentry xml:id="function.parse-str" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>parse_str</refname>
<refpurpose>将字符串解析成多个变量</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>void</type><methodname>parse_str</methodname>
<methodparam><type>string</type><parameter>string</parameter></methodparam>
<methodparam><type>array</type><parameter role="reference">result</parameter></methodparam>
</methodsynopsis>
<para>
如果 <parameter>string</parameter> 是 URL 传递入的查询字符串(query string),则将它解析为变量并设置到当前作用域(如果提供了 <parameter>result</parameter> 则会设置到该数组里 )。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>string</parameter></term>
<listitem>
<para>
输入的字符串。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>result</parameter></term>
<listitem>
<para>
如果设置了第二个变量 <parameter>result</parameter>,
变量将会以数组元素的形式存入到这个数组,作为替代。
</para>
<warning>
<para>
极度<emphasis>不建议</emphasis>在没有 <parameter>result</parameter> 参数的情况下使用此函数,
并且在 PHP 7.2 中将<emphasis>废弃</emphasis>不设置参数的行为。PHP 8.0.0
起,<parameter>result</parameter> 参数是<emphasis>强制的</emphasis>。
</para>
</warning>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
<parameter>result</parameter> 是必须项。
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
不带第二个参数的情况下使用 <function>parse_str</function> 会产生
<constant>E_DEPRECATED</constant> 警告。
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>parse_str</function> 的使用</title>
<programlisting role="php">
<![CDATA[
<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
// 推荐用法
parse_str($str, $output);
echo $output['first']; // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
// 不建议这么用
parse_str($str);
echo $first; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
?>
]]>
</programlisting>
</example>
</para>
<para>
由于 PHP 的变量名不能带「点」和「空格」,所以它们会被转化成下划线。
用本函数带 <parameter>result</parameter> 参数,也会应用同样规则到数组的键名。
<example>
<title><function>parse_str</function> 名称改写</title>
<programlisting role="php">
<![CDATA[
<?php
parse_str("My Value=Something");
echo $My_Value; // Something
parse_str("My Value=Something", $output);
echo $output['My_Value']; // Something
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
<function>parse_str()</function> 是受 <link linkend="ini.max-input-vars">max_input_vars</link>
指令影响的。超过这个限制会触发一个 <constant>E_WARNING</constant>,
超过限制的变量不会被添加到结果数组中。
默认值是 1000;根据需要调整 <link linkend="ini.max-input-vars">max_input_vars</link>。
</para>
</note>
<note>
<para>
所有创建的变量(或者在设置第二个参数的情况下,返回数组里的值),
都已经 <function>urldecode</function> 了。
</para>
</note>
<note>
<para>
要获取当前的 <literal>QUERY_STRING</literal>,可以使用
<varname>$_SERVER['QUERY_STRING']</varname> 变量。
所以你可能想要阅读
<link linkend="language.variables.external">来自 PHP 之外的变量</link>这个章节。
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>parse_url</function></member>
<member><function>pathinfo</function></member>
<member><function>http_build_query</function></member>
<member><function>urldecode</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->