mb_ereg_replace_callback
(PHP 5 >= 5.4.1, PHP 7)
mb_ereg_replace_callback — Выполняет поиск и замену по регулярному выражению с поддержкой многобайтовых кодировок используя callback-функцию
Описание
$pattern
, callable $callback
, string $string
, string|null $options
= null
) : string|false|null
Проверяет строку 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) для проверки.
-
options
-
Опция поиска. Подробнее смотрите mb_regex_set_options().
Возвращаемые значения
Результирующая строка в случае успешного выполнения или false
в случае возникновения ошибки.
Если string
некорректна для текущей кодировки,
возвращается null
.
Примечания
Замечание:
Для этой функции будет использована внутренняя кодировка или кодировка, установленная функцией mb_regex_encoding().
Список изменений
Версия | Описание |
---|---|
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 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);
?>
Смотрите также
- mb_regex_encoding() - Устанавливает/получает текущую кодировку для многобайтового регулярного выражения
- mb_ereg_replace() - Осуществляет замену по регулярному выражению с поддержкой многобайтовых кодировок
- Анонимные функции