Platzhalter durch Array-Wert ersetzen (preg_replace)

BLC

Grünschnabel
Hallo liebe Tutorials-Gemeinde,

Ziel ist es in einer Template-Datei (Datei 2) den Wert eines Platzhalters durch den Array-Wert aus einer Sprachdatei (Datei 1) zu ersetzen... Dies soll in Datei 3 geschehen... Das ganze gliedert sich so:

Die Sprachdatei:
PHP:
$lang['it_works'] = "Es funktioniert";
...

nun habe ich die Template-Datei, diese sieht so aus...
PHP:
<html>
  <body>
    {lang_it_wotks}
  </body>
</html>

Das Ziel ist nun, den Platzhalter {lang_it_works} mit dem Wert $lang['it_works'] zu ersetzen.
Dafür lese ich zu erste die Datei mittels file_get_contents() ein, was uns zur 3. Datei bringt:

PHP:
$loadTemplate = get_file_contents('template.html');
preg_replace('/\{lang_(.*?)\}/is', $lang[$1], $loadTemplate);


Nun stellen sich mir zwei Fragen:
1. Wie muss ich den preg_replace umbauen, damit er keinen Fehler mehr bei $lang[$1] erzeugt?
2. Wofür steht eigentlich das "/is" aus der 3. Datei?


Vielen lieben Dank, BLC
 
Mit preg_replace_callback

PHP:
$lang['it_works'] = "Es funktioniert"; 

$loadTemplate = "<html>
  <body>
    {lang_it_works}
  </body>
</html>  ";

function translate($treffer){
    return $GLOBALS['lang'][$treffer[1]];
}

echo preg_replace_callback('/\{lang_(.*?)\}/is', 'translate', $loadTemplate);

PS: in deinem Template solltest du noch {lang_it_wotks} durch {lang_it_works} ersetzen....


Nachtrag:
/is
Geh mal auf diese Testseite. Da findest du alle diese Infos bei den Parametern die man anwählen kann
http://www.regex-tester.de/regex.html
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: BLC
Zurück