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