(PHP 5 >= 5.4.1, PHP 7, PHP 8)
mb_ereg_replace_callback — Выполняет поиск и замену по регулярному выражению с поддержкой многобайтовых кодировок, обрабатывая совпадения callback-функцией
$pattern
,$callback
,$string
,$options
= 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] будет полное совпадение
Результат выполнения приведённого примера:
День смеха - 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().