Zaawansowane zamiany z preg_replace_callback()
Założenie: Nauczymy się używać funkcji preg_replace_callback()
do dynamicznego formatowania tekstu, w szczególności liczb.
Krok po kroku:
- Definicja funkcji callback: Zdefiniujemy funkcję, która będzie wywoływana dla każdego dopasowania wzorca w tekście. Funkcja ta otrzyma dopasowany fragment tekstu jako argument i zwróci sformatowaną wersję.
- Użycie preg_replace_callback(): Wykorzystamy funkcję
preg_replace_callback()
do zastąpienia wszystkich liczb w tekście sformatowanymi wersjami.
function formatujLiczbe($matches) {
return number_format($matches[0], 2, ',', ' ');
}
Funkcja formatujLiczbe()
przyjmuje tablicę dopasowań ($matches
) i formatuje pierwszą wartość ($matches[0]
) używając funkcji number_format()
. Formatowanie ustawione jest na dwie cyfry po przecinku, separator dziesiętny – przecinek, separator tysięcy – spacja.
$tekst = "Cena produktu wynosi 1234.56 zł, a rabat to 50.75 zł.";
$nowyTekst = preg_replace_callback('/\d+(\.\d+)?/', 'formatujLiczbe', $tekst);
echo $nowyTekst; // Wynik: Cena produktu wynosi 1 234,56 zł, a rabat to 50,75 zł.
preg_replace_callback('/\d+(\.\d+)?/', 'formatujLiczbe', $tekst)
zastępuje wszystkie liczby (wzorzec /\d+(\.\d+)?/
) w zmiennej $tekst
, wywołując dla każdego dopasowania funkcję formatujLiczbe()
.
Ten przykład pokazuje, jak za pomocą preg_replace_callback()
można dynamicznie modyfikować tekst, co jest bardzo przydatne w wielu sytuacjach, np. przy formatowaniu danych przed wyświetleniem.