preg_replace_callback

funkcja

Zamienia dopasowania wyrażenia regularnego na wynik wywołania funkcji zwrotnej. Daje pełną kontrolę nad tym, czym zastąpić każde dopasowanie.

preg_replace_callback(string|array $pattern, callable $callback, string|array $subject, int $limit = -1, int &$count = null, int $flags = 0): string|array|null

preg_replace_callback to potężniejsza wersja preg_replace — zamiast podawać statyczny ciąg zastępujący, przekazujesz funkcję, która dla każdego dopasowania może obliczyć i zwrócić dowolny wynik. Callback otrzymuje tablicę $matches (tak jak w preg_match) i musi zwrócić ciąg znaków wstawiany w miejsce dopasowania.

Parametr $limit pozwala ograniczyć liczbę zamian (domyślnie -1 oznacza brak limitu), a opcjonalny $count po wywołaniu zawiera liczbę rzeczywiście wykonanych zamian. Funkcja zwraca przetworzony ciąg lub null przy błędzie.

<?php
declare(strict_types=1);

$wynik = preg_replace_callback(
    '/\d+/',
    fn($m) => $m[0] * 2,
    'mam 3 koty i 5 psów'
);
echo $wynik; // wynik: mam 6 koty i 10 psów
📘 Naucz się w lekcji →