PHP 8.6.0 Beta 1 is available for testing

mb_ereg_replace_callback

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

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

Описание

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

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

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

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

pattern

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

В параметре pattern можно указывать многобайтовые символы.

callback

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

Передаваемая в параметр callback функции mb_ereg_replace_callback() 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() - Заменяет по регулярному выражению с поддержкой многобайтовых кодировок
  • Анонимные функции

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы

AltStyle によって変換されたページ (->オリジナル) /