(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Шаблон регулярного выражения.
мультибайтовые символы могут использоваться в шаблоне.
callback
Функция, которая будет вызвана для получения и передачи массива совпадени
в строку subject. Сallback-функция должна возвращать строку
для замены.
Часто может потребоваться объявлять callback функцию
для mb_ereg_replace_callback() только в одном месте.
В таком случае используйте
анонимные функции для
определения callback функции внутри вызова
mb_ereg_replace_callback(). При таком подходе у вас будет вся
информация про вызов в одном месте и вы не загрязните пространство имен функции
именем своей callback-функции не используемой больше нигде.
stringСтрока для проверки.
option
Можно произвести настройку совпадений используя параметр
option. Если указан параметр i, будет
проигнорирован регистр символов. Если указан параметр x,
будут проигнорированы пробельные символы. Если указан параметр m,
совпадения будут найдены в мультистроковом режиме и разрыв строки будет включен с
помощью '.'. Если определен параметр p, совпадения будут искаться в
режиме POSIX, разрыв линии будет считаться за обычный символ. Заметьте, что параметр
e не может быть использован для функции
mb_ereg_replace_callback().
Результирующая строка в случае успеха, или FALSE в случае ошибки.
Замечание:
Для этой функции будет использована внутренняя кодировка или кодировка, установленная функцией mb_regex_encoding().
Пример #1 Пример функции mb_ereg_replace_callback()
<?php
// this text was used in 2002
// we want to get this up to date for 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
// the callback function
function next_year($matches)
{
// as usual: $matches[0] is the complete match
// $matches[1] the match for the first subpattern
// enclosed in '(...)' and so on
return $matches[1].($matches[2]+1);
}
echo mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
"next_year",
$text);
?>
Результат выполнения данного примера:
April fools day is 04/01/2003 Last christmas was 12/24/2002
Пример #2 mb_ereg_replace_callback() использует анонимную функцию, поддерживаемую в PHP 5.3.0 или более поздней версии
<?php
// this text was used in 2002
// we want to get this up to date for 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
echo mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
function ($matches) {
return $matches[1].($matches[2]+1);
},
$text);
?>