strtolower() in preg_replace()-Ergebnissen

Johnnii360

Erfahrenes Mitglied
Servus zusammen!

Hab gestern schon viel gerätselt, probiert und recherchiert, aber irgendwie keine Lösung gefunden.

Ich habe mir anhand des Beispiels von PHP.net einen Testschnipsel für mein Vorhaben zurechtgerückt:

PHP:
$zeichenkette = "DE, Nürnberg";
$suchmuster = '/(\w+)\, (\w+)/';
$ersetzung = '<img src="bilder/flaggen/$1.png" alt="$2">';
echo preg_replace($suchmuster, $ersetzung, $zeichenkette);

So, in diesem Fall ist nun $1 DE und $2 Nürnberg. Jetzt ist allerdings das Problem, dass $1 (DE) immer groß bleibt. Das will ich jedoch gerne klein haben und hab schon verschiedene Befehle in die $ersetzung Variable eingebaut. Aber die macht dann nur das $1 "klein". Nur es gibt kein kleines $ und auch keine kleine 1. :)

Bevor ist das jetzt einfach banal über explode() mache, gibt es so dort noch eine Möglichkeit?
 
Lösung
Ich denke schon, dass es eine andere Möglichkeit gibt und zwar indem Du preg_replace_callback verwendest. Dann kannst Du in der Callback-Funktion deine Parameter beliebig umändern, also auch auch Kleinschreibung.
Ich denke schon, dass es eine andere Möglichkeit gibt und zwar indem Du preg_replace_callback verwendest. Dann kannst Du in der Callback-Funktion deine Parameter beliebig umändern, also auch auch Kleinschreibung.
 
Lösung
Ich denke schon, dass es eine andere Möglichkeit gibt und zwar indem Du preg_replace_callback verwendest. Dann kannst Du in der Callback-Funktion deine Parameter beliebig umändern, also auch auch Kleinschreibung.
Ah okay, danke! Dann probier ich das mal aus.

Nachtrag: Hat geklappt. Danke nochmals!

PHP:
$zeichenkette = "DE, Nürnberg";
$suchmuster = '/(\w+)\, ([a-zA-Zäßüö]+)/';

function Landesflagge ($ergebnisse) {
    return '<img src="bilder/flaggen/'.strtolower($ergebnisse[1]).'.png" alt="'.$ergebnisse[2].'" title="'.$ergebnisse[2].'">';
}

echo preg_replace_callback($suchmuster, "Landesflagge", $zeichenkette);
 
Zuletzt bearbeitet:
Zurück