dedlfix: replace mit variable

Beitrag lesen

echo $begrüßung;

$lang['lang_name'] = "Deutsch";

Das sieht sehr nach variabler Variable aus. Der Teil 'name' steht doch sicher für verschiedene Werte?

$template = "Sprache: {lang:name}";
$template = eregi_replace("{lang:([^[]+)}",$lang['lang_\1'],$template);

Kontrollausgaben können erleuchtend sein, wenn man sie macht. Das error_reporting auf E_ALL zu stellen ist auch immer hilfreich. Du hättest dann einen Fehler bekommen, weil es den Schlüssel lang_\1 nicht in $lang gibt. Du erwartest, dass die Funktion eregi_replace() den Parameter, der ihr übergeben wird im Voraus ändert. Zumindest hast du das so notiert. Das geht so nicht. Der zweite Parameter soll ein String sein, der Platzhalter enthalten darf. Wenn du einer Funktion eine Variable übergibst, wird diese zuerst ausgelesen bevor die Funktion mit deren Inhalt aufgerufen wird. Die Platzhalter, die eregi_replace() in dem String erwartet, sind nur dieser Funktion bekannt. Das restliche PHP hat davon keine Ahnung. Das gleiche Problem hast du mit dem preg_replace().

$template = eregi_replace("{lang:([^[]+)}",'lang_\1',$template);
er will das blos irgendwie nciht mit der variable ...

Mir fällt keine andere Lösung ein, als preg_replace() mit dem Modifizierer e zu verwenden. Beachte dabei aber, dass auch hier eine eval()uation vorliegt, die gegen unbeabsichtigtes Code-Ausführen gesichert werden muss.

echo "$verabschiedung $name";