-
Notifications
You must be signed in to change notification settings - Fork 105
/
Copy pathstr-replace.xml
197 lines (183 loc) · 6.54 KB
/
str-replace.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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 464fbf0d12f89b1e723908780fb68acf667f5901 Maintainer: daijie Status: ready -->
<!-- CREDITS: mowangjuanzi -->
<refentry xml:id="function.str-replace" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>str_replace</refname>
<refpurpose>子字符串替换</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>string</type><type>array</type></type><methodname>str_replace</methodname>
<methodparam><type class="union"><type>array</type><type>string</type></type><parameter>search</parameter></methodparam>
<methodparam><type class="union"><type>array</type><type>string</type></type><parameter>replace</parameter></methodparam>
<methodparam><type class="union"><type>string</type><type>array</type></type><parameter>subject</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter role="reference">count</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
该函数返回字符串或者数组。该字符串或数组是将 <parameter>subject</parameter> 中全部的 <parameter>search</parameter> 都被 <parameter>replace</parameter> 替换之后的结果。
</para>
<para>
要根据模式而不是固定字符串替换文本,使用 <function>preg_replace</function>。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
如果 <parameter>search</parameter> 和 <parameter>replace</parameter> 为数组,那么 <function>str_replace</function> 将对 <parameter>subject</parameter> 做二者的映射替换。如果 <parameter>replace</parameter> 的值的个数少于 <parameter>search</parameter> 的个数,多余的替换将使用空字符串来进行。如果 <parameter>search</parameter> 是一个数组而 <parameter>replace</parameter> 是一个字符串,那么 <parameter>search</parameter> 中每个元素的替换将始终使用这个字符串。该转换不会改变大小写。
</para>
<para>
如果 <parameter>search</parameter> 和 <parameter>replace</parameter> 都是数组,它们的值将会被依次处理。
</para>
<para>
<variablelist>
<varlistentry>
<term><parameter>search</parameter></term>
<listitem>
<para>
查找的目标值,也就是 <emphasis>needle</emphasis>。一个数组可以指定多个目标。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>replace</parameter></term>
<listitem>
<para>
<parameter>search</parameter> 的替换值。一个数组可以被用来指定多重替换。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>subject</parameter></term>
<listitem>
<para>
执行替换的数组或者字符串。也就是 <emphasis>haystack</emphasis>。
</para>
<para>
如果 <parameter>subject</parameter> 是一个数组,替换操作将遍历整个 <parameter>subject</parameter>,返回值也将是一个数组。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>count</parameter></term>
<listitem>
<para>
如果被指定,它的值将被设置为替换发生的次数。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
该函数返回替换后的数组或者字符串。
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>str_replace</function> 基本示例</title>
<programlisting role="php">
<![CDATA[
<?php
// 赋值: <body text='black'>
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");
// 赋值: Hll Wrld f PHP
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
// 赋值: You should eat pizza, beer, and ice cream every day
$phrase = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");
$newphrase = str_replace($healthy, $yummy, $phrase);
// 赋值: 2
$str = str_replace("ll", "", "good golly miss molly!", $count);
echo $count;
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>可能的 <function>str_replace</function> 替换示例</title>
<programlisting role="php">
<![CDATA[
<?php
// 替换顺序
$str = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$order = array("\r\n", "\n", "\r");
$replace = '<br />';
// 首先替换 \r\n 字符,因此它们不会被两次转换
$newstr = str_replace($order, $replace, $str);
// 输出 F ,因为 A 被 B 替换,B 又被 C 替换,以此类推...
// 由于从左到右依次替换,最终 E 被 F 替换
$search = array('A', 'B', 'C', 'D', 'E');
$replace = array('B', 'C', 'D', 'E', 'F');
$subject = 'A';
echo str_replace($search, $replace, $subject);
// 输出: apearpearle pear
// 由于上面提到的原因
$letters = array('a', 'p');
$fruit = array('apple', 'pear');
$text = 'a p';
$output = str_replace($letters, $fruit, $text);
echo $output;
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
¬e.bin-safe;
<caution>
<title>了解替换顺序</title>
<para>
由于 <function>str_replace</function> 的替换时从左到右依次进行的,进行多重替换的时候可能会替换掉之前插入的值。参见该文档的示例。
</para>
</caution>
<note>
<para>
该函数区分大小写。使用 <function>str_ireplace</function> 可以进行不区分大小写的替换。
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>str_ireplace</function></member>
<member><function>substr_replace</function></member>
<member><function>preg_replace</function></member>
<member><function>strtr</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
-->