PHP-Code:
preg_match("/\[CARD]([^\]]+)\[\/CARD\]/isU", $text, $treffer);
for($i=1; $i<=(count($treffer)); $i++)
{
$suchen = "[CARD]" . $treffer[$i] . "[/CARD]";
$ersetzen = kartenbild($treffer[$i]);
$text = str_replace($suchen, $ersetzen, $text);
}
Dieser Code soll bei einem eingegebenen Text zum Beispiel [CARD]Herzbube[/CARD] durch ein Bild der entsprechenden Karte ersetzen (Funktion kartenbild(), die keine Probleme macht).
Das funktioniert auch, allerdings nur beim ersten Auftreten innerhalb einer Reihe davon, also zum Beispiel aus
[CARD]Herzbube[/CARD]
[CARD]Karodame[/CARD]
[CARD]Pikzehn[/CARD]
[CARD]HerzaAss[/CARD]
wird
*bild*
[CARD]Karodame[/CARD]
[CARD]Pikzehn[/CARD]
[CARD]HerzaAss[/CARD]
Und wenn danach noch ein Text kommt und wieder eine Aufzählung, dann wird dort wieder die erste Karte ersetzt, und die nächste nicht.
Woran liegt das? Muss ich irgendwelche zusätzlichen modifier setzen? wenn ja, welche? Oder wie kann ich preg_replace benutzen, wenn ich den Rückgabewert einer Funktion als ERsetzung habe?