preg_replace warum geht das nicht?

alloisxp

Mitglied
Habe folgenden Testcode:

PHP:
$string='[IMG si="1"]';

$ersatz[0]="falsch";
$ersatz[1]="richtig";

$muster = "=(\[IMG si\=\")([0-9]+)(\"\])=s";

$new_string = preg_replace($muster,$ersatz["\\2"],$string);

echo $new_string;

Wieso geht das nicht?
Und wie kriege ich einen ähnlichen Effekt hin?
Also das er mir je nachdem was in size steht einen anderen Ersatz liefert, aber ohne das ich dutzende preg_replace Aufrufe durchführen muss?
 
In deinem Fall muss der Ersatzwert als PHP-Code verarbeitet werden. Dazu muss zusätzlich der „e“-Modifikator gesetzt werden:
PHP:
$new_string = preg_replace('=\[IMG si\="([0-9]+)"\]=se', '$ersatz[\1]', $string);
 
Zurück