function in eval auslösen

phoenixneo

Grünschnabel
Hallo ihr Profis

Komme bei einem PHP Problem nicht weiter. :(

Ich habe den namen einer eigenen Funktion in einer Datenbank abgespeichert und will den Namen aus der Datenbank holen und von PHP interpretieren lassen.

Das Problem ist nun das es sich um einen String handelt und nicht um die Funktion. Nun habe ich ein bisschen mit der eval Funktion gespielt. Diese scheint mir aber nur die Variablen korrekt zu interpretieren. Die Funktion wird nur als Text ausgegeben.

Um das Problem zu lösen, habe ich das hier vereinfacht dargestellt und mal einfach irgend eine Funktion genommen.

PHP:
 $text1="blablabla ";
	$text2="strlen($text1)";
	$text3=" 123456789";
	$text_alles=$text1.$text2.$text3;
	eval("\$text_alles = \"$text_alles\";");
	echo $text_alles;

ich möchte nun das mir das echo folgenden Text zurück gibt: blablabla 9 123456789
und nicht: blablabla strlen(blablabla) 123456789

Hab mir darüber schon einen abgegoogelt und nichts brauchbares gefunden -.- vielleicht kennt ihr noch eine alternative zu eval die das kann...

Vielen Dank für eure Hilfe :)

Gruss tanja
 
Hallo timestamp
Danke für deine Antwort :)
Ich habe probiert diese funktion einzubauen, aber leider wird diese so auch nur als text ausgegeben. :/
 
das wäre eine gute Methode. Das Problem ist, dass der name der functionals String aus der Datenbank kommt.
Die ganze Sache kommt etwa in so aus der Datenbank:
PHP:
$functionsname="strlen";//kommt als String aus der Datenbank
$parameter="blablabla";//kommt als String aus der Datenbank

$text1="fdsjkasadfhlsa";
$text2="dfsadfasfwe";
$funktion=$functionsname."(".$parameter.")";
$alles=$text1.$funktion.text2;
echo $alles;
Da die Funktionen als String erscheint und das noch mitten in einem Text ist die sache recht kompliziert. :(
 
auf wieviel funtionsarten magst du den zugreifen?

PHP:
$functionsname="strlen";//kommt als String aus der Datenbank
$parameter="blablabla";//kommt als String aus der Datenbank


$text1="fdsjkasadfhlsa";
$text2="dfsadfasfwe";
if($functionsname=="strlen") {$function=strlen(".$parameter.");}
#if...
$alles=$text1.$funktion.text2;
echo $alles;
 
BESSER! timestamp hat dir doch dei antowrt gegeben!

PHP:
$functionsname="strlen";//kommt als String aus der Datenbank
$parameter="blablabla";//kommt als String aus der Datenbank


$text1="fdsjkasadfhlsa";
$text2="dfsadfasfwe";
$funktion = call_user_func($functionsname, $parameter);
$alles=$text1.$funktion.text2;
echo $alles;
 
Zurück