mb_ereg_replace_callback

(PHP 5 >= 5.4.1, PHP 7, PHP 8)

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

Описание

mb_ereg_replace_callback(
    string $pattern,
    callable $callback,
    string $string,
    string|null $options = null
): string|false|null

Проверяет строку string на совпадение с шаблоном pattern, затем заменяет найденный текст результатом функции callback.

Поведение этой функции почти идентично с функцией mb_ereg_replace(), за исключением того, что вместо строки замены replacement необходимо определять функцию callback.

Список параметров

pattern

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

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

callback

Функция, которая будет вызвана для получения и передачи массива совпадений в строку subject. Callback-функция должна возвращать строку для замены.

Часто может потребоваться объявлять функцию callback для mb_ereg_replace_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().

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

  • mb_regex_encoding() - Устанавливает/получает текущую кодировку для многобайтового регулярного выражения
  • mb_ereg_replace() - Осуществляет замену по регулярному выражению с поддержкой многобайтовых кодировок
  • Анонимные функции

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top