(PHP 5 >= 5.4.1, PHP 7)
mb_ereg_replace_callback — Выполняет поиск и замену по регулярному выражению с поддержкой многобайтовых кодировок используя callback-функцию
$pattern
, callable $callback
, string $string
[, string $option
= "msr"
] )
Проверяет строку string
на совпадение с шаблоном
pattern
, затем заменяет найденный текст
результатом функции callback
.
Поведение этой функции почти идентично с функцией mb_ereg_replace(),
за исключением того, что вместо строки замены
replacement
необходимо определять
функцию callback
.
pattern
Шаблон регулярного выражения.
Мультибайтовые символы могут использоваться в pattern
.
callback
Функция, которая будет вызвана для получения и передачи массива совпадений
в строку subject
. Сallback-функция должна возвращать строку
для замены.
Часто может потребоваться объявлять функцию callback
для mb_ereg_replace_callback() только в одном месте.
В таком случае используйте
анонимные функции для
определения callback-функции внутри вызова
mb_ereg_replace_callback(). При таком подходе у вас будет вся
информация про вызов в одном месте и вы не загрязните пространство имен функции
именем своей callback-функции, которое больше нигде не используется.
string
Строка (string) для проверки.
option
Можно произвести настройку совпадений используя параметр
option
. Если указан параметр i, будет
проигнорирован регистр символов. Если указан параметр x,
будут проигнорированы пробельные символы. Если указан параметр m,
совпадения будут найдены в мультистроковом режиме и разрыв строки будет включен с
помощью '.'. Если определен параметр p, совпадения будут искаться в
режиме POSIX, разрыв строки будет считаться за обычный символ. Заметьте, что параметр
e не может быть использован для функции
mb_ereg_replace_callback().
Результирующая строка в случае успеха, или FALSE
в случае ошибки.
Замечание:
Для этой функции будет использована внутренняя кодировка или кодировка, установленная функцией mb_regex_encoding().
Пример #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 5.3.0 или более поздней версии
<?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);
?>