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:

  1. 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ę.
  2. 
    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.

  3. Użycie preg_replace_callback(): Wykorzystamy funkcję preg_replace_callback() do zastąpienia wszystkich liczb w tekście sformatowanymi wersjami.
  4. 
    $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.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *