(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] будет полное совпадение
// $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().