[preg_replace] ersetzung = array[suchmuster] -> nicht möglich?

Templorials

Erfahrenes Mitglied
Hallo,

habe ein Problem..
würde gerne folgendes machen:

Irgentwo in einem Text steht zum Beispiel: [test]hallo[/test]
Jetzt möchte ich mittels preg_replace (oder vl gibt es eine andere Lösung?) das ein $hallo (also Variable - aber das geht anscheinend nicht?) oder ein $array["hallo"] (was aber anscheinend auch nicht geht - habs grad versucht) draus wird..

Wie könnte ich das sonst lösen?

PHP:
$test["blabla"] = "dings";
$t = '[test]blabla[/test]';
$t = preg_replace("/\[test\](.*?)\[\/test\]/si",$test["\\1"], $t);
echo $t;
bring kein Ergebnis...

(als info $t = preg_replace("/\[test\](.*?)\[\/test\]/si",'$lang["\\1"]', $t); bringt genau das $test["blabla"])


oder zum Beispiel {test} durch $test ersetzen (automatisiert) .. versuch da schon länger rum.. komm zu keiner Lösung

Lg, Michi
 
Zuletzt bearbeitet:
Probiers mal so:
PHP:
<?php
$blabla = "dings";
$t = '[test]blabla[/test]';
$t = preg_replace("/\[test\](.*?)\[\/test\]/eis",'$\\1', $t);
echo $t;
?>

Falls du damit allerdings Eingaben Fremder bearbeiten willst, sei dich des Sicherheitsrisikos bewusst, BSP:

PHP:
<?php
//irgendwo in den Weiten des Universums:
$supergeheimesPasswort='knut';


//Lichtjahre weiter:
$t = preg_replace("/\[test\](.*?)\[\/test\]/eis",'$\\1', $t);
echo $t;
?>

nun kommt Darth Vader vorbei und gibt Folgendes ein:
Code:
[test]supergeheimesPasswort[/test]

Von der Warte aus wäre die Array-Variante eindeutig vorzuziehen, damit kein Zugriff auf globale Variablen möglich ist:
PHP:
<?php
$vars=array();
$vars['blabla'] = "bums";
$t = '[test]blabla[/test]';
$t = preg_replace("/\[test\](.*?)\[\/test\]/eis",'$vars["\\1"]', $t);
echo $t;
?>
 
Zurück