ConFoo 2025

mb_ereg_replace_callback

(PHP 5 >= 5.4.1, PHP 7, PHP 8)

mb_ereg_replace_callbackВыполняет поиск и замену по регулярному выражению с поддержкой многобайтовых кодировок, обрабатывая совпадения callback-функцией

Описание

mb_ereg_replace_callback(
    string $pattern,
    callable $callback,
    string $string,
    ?string $options = null
): string|false|null

Проверяет строку string на совпадение с шаблоном pattern, затем заменяет найденный текст выводом функции callback.

Поведение этой функции почти идентично функции mb_ereg_replace(), за исключением того, что вместо строки замены replacement необходимо определять функцию callback.

Список параметров

pattern

Шаблон регулярного выражения.

В параметре pattern можно указывать многобайтовые символы.

callback

Callback-функция, которая будет вызвана и получит массив совпавших в строке string элементов. Callback-функция должна возвращать строку замены.

Передаваемая в параметр callback функции mb_ereg_replace_callback() callback-функция часто нужна только в одном месте. Можно использовать анонимные функции, чтобы определить callback-функцию внутри вызова функции mb_ereg_replace_callback(). Поступая так, разработчик получает всю информацию о вызове в одном месте и не загрязняет пространство имён функций именем callback-функции, которая больше нигде не потребуется.

string

Строка (string) для проверки.

options

Вариант поиска. Объяснение дано в описании функции mb_regex_set_options().

Возвращаемые значения

Возвращает результирующую строку в случае успешного выполнения или false в случае возникновения ошибки. Если строка string недопустима для текущей кодировки, возвращается значение null.

Список изменений

Версия Описание
8.0.0 Параметр options теперь может принимать значение null.
7.1.0 Функция проверяет, допустима ли строка string для текущей кодировки.

Примеры

Пример #1 Пример использования функции mb_ereg_replace_callback()

<?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,
);

?>

Результат выполнения приведённого примера:

День смеха - 04/01/2003
Последнее Рождество было 12/24/2002

Пример #2 Пример использования функции mb_ereg_replace_callback() с анонимной функцией

<?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,
);
?>

Примечания

Замечание:

Для этой функции будет использована внутренняя кодировка или кодировка, установленная функцией mb_regex_encoding().

Смотрите также

  • mb_regex_encoding() - Устанавливает или получает кодировку символов для многобайтового регулярного выражения
  • mb_ereg_replace() - Заменяет по регулярному выражению с поддержкой многобайтовых кодировок
  • Анонимные функции

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top