1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-25 16:22:18 +01:00
Files
archived-doc-ru/reference/mbstring/functions/mb-ereg-replace-callback.xml
Mikhail Alferov 401b3612ee Обновление перевода (#649)
Co-authored-by: Sergey Panteleev <sergey@php.net>
2024-01-08 19:13:39 +03:00

232 lines
8.0 KiB
XML
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.
<?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;
&note.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
-->