Функции для работы с Многобайтными строками
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

Шаблон регулярного выражения.

мультибайтовые символы могут использоваться в шаблоне.

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);
?>

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


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