Функции для работы с многобайтовыми строками
PHP Manual

mb_ereg_replace_callback

(PHP 5 >= 5.4.1, PHP 7)

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

Описание

string mb_ereg_replace_callback ( string $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);
?>

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


Функции для работы с многобайтовыми строками
PHP Manual