Перейти к содержимому

preg_replace_callback_array

Введение

В PHP регулярные выражения являются важным инструментом для обработки и поиска в строках. Доступная начиная с PHP 7.1 функция preg_replace_callback_array() позволяет заменять все вхождения нескольких регулярных выражений с помощью различных callback-функций. В этой статье рассматривается принцип работы функции и способы её эффективного использования.

Понимание функции preg_replace_callback_array()

Функция preg_replace_callback_array() ищет в заданной строке (subject) все вхождения нескольких регулярных выражений и заменяет их значениями, возвращаемыми соответствующими callback-функциями. Если subject является строкой, функция возвращает строку; если это массив, возвращается массив. Синтаксис выглядит следующим образом:

php
preg_replace_callback_array($patterns_and_callbacks, $subject, $limit, &$count);

Здесь $patterns_and_callbacks — это массив, содержащий регулярные выражения в качестве ключей и callback-функции в качестве значений. $subject — это строка или массив, в котором производится поиск и замена. $limit — необязательный параметр, задающий максимальное количество замен, а &$count — необязательный параметр, возвращающий количество выполненных замен.

Примечание: Callback-функции должны возвращать строки. Если callback возвращает null, он приводится к пустой строке. PHP автоматически преобразует числовые возвращаемые значения в строки.

Пример использования

Рассмотрим пример, чтобы понять, как использовать функцию preg_replace_callback_array() в PHP:

Пример использования PHP preg_replace_callback_array()

php
<?php

$patterns_and_callbacks = [
  '/(\w+)/i' => function ($matches) {
    return strtoupper($matches[0]);
  },
  '/(\d+)/' => function ($matches) {
    return $matches[0] + 1;
  },
];
$string = 'This is a test string with 1234';

$new_string = preg_replace_callback_array($patterns_and_callbacks, $string);

echo $new_string;

В этом примере первая callback-функция преобразует найденные слова в верхний регистр, а вторая увеличивает найденные цифры на единицу. Обратите внимание, что вторая callback-функция возвращает целое число, которое PHP автоматически преобразует в строку. Функция обрабатывает все шаблоны и выводит результирующую изменённую строку.

Заключение

Функция preg_replace_callback_array() предоставляет чистый и удобный способ применения пользовательской логики к нескольким регулярным выражениям за один проход. Она особенно полезна, когда для разных шаблонов требуются различные стратегии замены. Мы надеемся, что этот обзор поможет вам интегрировать функцию в ваши PHP-проекты. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.

Практика

Что делает функция preg_replace_callback_array в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.