-
Notifications
You must be signed in to change notification settings - Fork 79
Expand file tree
/
Copy pathmb-ereg-replace-callback.xml
More file actions
231 lines (217 loc) · 7.96 KB
/
mb-ereg-replace-callback.xml
File metadata and controls
231 lines (217 loc) · 7.96 KB
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
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 14c33cf174c921e21b82a0ed262268c087137bdb Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.mb-ereg-replace-callback" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>mb_ereg_replace_callback</refname>
<refpurpose>Выполняет поиск и замену по регулярному выражению с поддержкой многобайтовых кодировок, обрабатывая совпадения callback-функцией
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>string</type><type>false</type><type>null</type></type><methodname>mb_ereg_replace_callback</methodname>
<methodparam><type>string</type><parameter>pattern</parameter></methodparam>
<methodparam><type>callable</type><parameter>callback</parameter></methodparam>
<methodparam><type>string</type><parameter>string</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>options</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Проверяет строку <parameter>string</parameter> на совпадение с шаблоном
<parameter>pattern</parameter>, затем заменяет найденный текст
выводом функции <parameter>callback</parameter>.
</para>
<para>
Поведение этой функции почти идентично функции <function>mb_ereg_replace</function>,
за исключением того, что вместо строки замены
<parameter>replacement</parameter> необходимо определять
функцию <parameter>callback</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>pattern</parameter></term>
<listitem>
<para>
Шаблон регулярного выражения.
</para>
<para>
В параметре <parameter>pattern</parameter> можно указывать многобайтовые символы.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>callback</parameter></term>
<listitem>
<para>
Callback-функция, которая будет вызвана и получит массив совпавших
в строке <parameter>string</parameter> элементов. Callback-функция должна
возвращать строку замены.
</para>
<para>
Передаваемая в параметр <parameter>callback</parameter> функции <function>mb_ereg_replace_callback</function> callback-функция
часто нужна только в одном месте.
Можно использовать
<link linkend="functions.anonymous">анонимные функции</link>, чтобы
определить callback-функцию внутри вызова
функции <function>mb_ereg_replace_callback</function>. Поступая так, разработчик получает
всю информацию о вызове в одном месте и не загрязняет пространство имён функций
именем callback-функции, которая больше нигде не потребуется.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>string</parameter></term>
<listitem>
<para>
Строка (<type>string</type>) для проверки.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>options</parameter></term>
<listitem>
<para>
Вариант поиска. Объяснение дано в описании функции <function>mb_regex_set_options</function>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает результирующую строку в случае успешного выполнения или &false; в случае возникновения ошибки.
Если строка <parameter>string</parameter> недопустима для текущей кодировки,
возвращается значение &null;.
</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>options</parameter> теперь может принимать значение null.
</entry>
</row>
<row>
<entry>7.1.0</entry>
<entry>
Функция проверяет, допустима ли строка <parameter>string</parameter>
для текущей кодировки.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования функции <function>mb_ereg_replace_callback</function></title>
<programlisting role="php">
<![CDATA[
<?php
// этот текст был утверждён в 2002
// мы хотим обновить его для 2003
$text = "День смеха — 04/01/2002\n";
$text.= "Последнее Рождество было 12/24/2001\n";
// callback-функция
function next_year($matches)
{
// как обычно: в $matches[0] будет полное совпадение
// $matches[1] — совпадение для первого подшаблона,
// заключённое в «(...)» и т. д.
return $matches[1] . ($matches[2] + 1);
}
echo mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
"next_year",
$text,
);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
День смеха - 04/01/2003
Последнее Рождество было 12/24/2002
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Пример использования функции <function>mb_ereg_replace_callback</function> с анонимной функцией</title>
<programlisting role="php">
<![CDATA[
<?php
// этот текст был утверждён в 2002
// мы хотим обновить его для 2003
$text = "День смеха — 04/01/2002\n";
$text.= "Последнее Рождество было 12/24/2001\n";
echo mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
function ($matches) {
return $matches[1] . ($matches[2] + 1);
},
$text,
);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
¬e.mbstring.encoding.internal;
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>mb_regex_encoding</function></member>
<member><function>mb_ereg_replace</function></member>
<member><link linkend="functions.anonymous">Анонимные функции</link></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
-->