EDIT:
Sorry, das Forum ändert meinen Code.
Die Pattern heissen richtig "/({LANG:([\w]*)}/"; bzw. "/({DATA:([\w]*)}/"; und die Variable $replace hat den Inhalt "\\2";
Hallo zusammen!
Ich habe folgenden Code:
PHP-Code:
$input = "{LANG::anrede},<br>{LANG::willkommen} {DATA::wo}";
$a = array();
$lang = array(
'anrede' => 'Sehr geehrter Herr {DATA::name}',
'willkommen' => 'Herzlich willkommen ',
);
$data = array(
'name' => 'Mueller',
'wo' => 'im Forum',
);
$pattern1 = "/({LANG::)([\w]*)}/";
$pattern2 = "/({DATA::)([\w]*)}/";
echo "Original:<br>$input";
preg_match_all($pattern1, $input, $a, PREG_SET_ORDER);
for ($i=0; $i < count($a); $i++)
{
$input = str_replace($a[$i][0],$lang[$a[$i][2]],$input);
}
echo "<br><br>1. Durchgang:<br>$input";
preg_match_all($pattern2, $input, $a, PREG_SET_ORDER);
for ($i=0; $i < count($a); $i++)
{
$input = str_replace($a[$i][0],$data[$a[$i][2]],$input);
}
echo "<br><br>2. Durchgang:<br>$input";
Code:
Original: {LANG::anrede}, {LANG::willkommen} {DATA::wo} 1. Durchgang: Sehr geehrter Herr {DATA::name}, Herzlich willkommen {DATA::wo} 2. Durchgang: Sehr geehrter Herr Mueller, Herzlich willkommen im Forum
1. nicht die performanteste
2. nicht die eleganteste ist
Richtig?
Ich haette gerne eine Loesung mit preg_replace, die z.B. so aussehen koennte:
PHP-Code:
$replace = '\\2';
$test = preg_replace($pattern1,$replace,$input);
print $test;
Hoffe, es war einigermassen verstaendlich was mein Problem ist.
Ausserdem frage ich mich, ob meine Pattern ($pattern1 und $pattern2) ausreichend sind, um in einem Text beliebige Muster der form {LANG::XYZ} und {DATA::asdfasdf} zu erkennen?
Nochmal zusammengefasst:
1. Gibt es elegantere bzw. performantere Loesungen?
2. wie bekomme ich es hin in der unten genannten Loesung $replace zu "dynamisieren"?
3. sind meine Pattern ausreichend?
Kommentar