eval() und Funktionen
HansP
- php
Hallo,
folgendes Problem sitzt mir gerade im Nacken.
Ich möchte in einem Arrayvalue einen konkatinierten String (HTML Ausgabe + PHP Funktionen für diverse Formatierungen) speichern, und diesen später per eval() parsen lassen. Nur wird dieser String bis dato zur Laufzeit, d.h. anlegen des Arrays ausgeführt. Wie kann ich das verhindern?
Bsp:
$test = array('string1' => "<a href='gehewohin.com'>" . machwas() . "</a>");
eval("\$Str = \"" . addslashes($test['string1']) . "\";");
echo $Str;
Ich hoffe ihr versteht was ich erreichen möchte.
MFG
HansP
Hi,
Ich möchte in einem Arrayvalue einen konkatinierten String (HTML Ausgabe + PHP Funktionen für diverse Formatierungen) speichern, und diesen später per eval() parsen lassen. Nur wird dieser String bis dato zur Laufzeit, d.h. anlegen des Arrays ausgeführt. Wie kann ich das verhindern?
Bsp:
$test = array('string1' => "<a href='gehewohin.com'>" . machwas() . "</a>");
Rufe die Funktion nicht auf, wenn du eigentlich nur ihren Namen gefolgt von runden Klammern in einem Stringkontext verwenden willst.
MfG ChrisB
Rufe die Funktion nicht auf, wenn du eigentlich nur ihren Namen gefolgt von runden Klammern in einem Stringkontext verwenden willst.
Das verstehe ich jetzt nicht.
Die Funktion beinhaltet ja auch Argumente.
Hi,
Rufe die Funktion nicht auf, wenn du eigentlich nur ihren Namen gefolgt von runden Klammern in einem Stringkontext verwenden willst.
Das verstehe ich jetzt nicht.
Was verstehst du daran nicht?
Wenn du einen Funktionsnamen in einem String notieren willst - dann notiere ihn auch *im* String.
Die Funktion beinhaltet ja auch Argumente.
Ja - und?
MfG ChrisB
Du meinst so?
$test = array('string1' => "<a href='gehewohin.com'>machwas()"</a>");
Hatte ich schon probiert, aber da wird der String, so wie er dasteht, auch ausgegeben.
Hi,
$test = array('string1' => "<a href='gehewohin.com'>machwas()"</a>");
Hatte ich schon probiert, aber da wird der String, so wie er dasteht, auch ausgegeben.
Das ist ja auch blödsinniger Code, wenn du PHP ausgeführt bekommen willst.
Mit <a href ... kann der Befehlsinterpreter jedenfalls nichts anfangen.
MfG ChrisB
Ja gut, dennoch möchte ich das der String, wenn er denn geparsed wird, gleich alle Elemente enthält. Und da komme ich um einen Mix HTML und PHP Funktionen nicht drumherum. Hast du denn eine bessere Idee?
Hi,
Ja gut, dennoch möchte ich das der String, wenn er denn geparsed wird, gleich alle Elemente enthält. Und da komme ich um einen Mix HTML und PHP Funktionen nicht drumherum.
Dann mixe halt - sinnvoll.
Hast du denn eine bessere Idee?
Zu eval existieren fast immer bessere Alternativen. Aber um dahingehend überlegen zu können, müsste man deine Aufgabenstellung kennen.
MfG ChrisB
OK, hab ne Lösung gefunden - passt alles - ty
Hallo!
OK, hab ne Lösung gefunden - passt alles - ty
Müssen wir nun alle doof sterben, oder magst Du für das liebe Archiv und somit eventuell zukünftig Suchende ein Wort dazu hinterlassen?
Das macht nämlich den Reiz einer Archivsuche aus: das Auffinden von Lösungen bei deren Suche!
Ciao
GG
Hallo!
OK, hab ne Lösung gefunden - passt alles - ty
Müssen wir nun alle doof sterben, oder magst Du für das liebe Archiv und somit eventuell zukünftig Suchende ein Wort dazu hinterlassen?
Das macht nämlich den Reiz einer Archivsuche aus: das Auffinden von Lösungen bei deren Suche!
Nachtrag: Du wärst nicht der erste, dessen lautes Heureka beim Auffinden einer vermeintlichen Lösung dem Schweigen der Verzweiflung weichen muß.
Der Clou an diesem Forum ist, dass man sich hier mehr als ein oder zwei Meinungen einholen kann und wenn man sich dazu eigene Gedanke erlaubt, in der Regel neben der Problemlösung noch Stoff für zukünftige Lektüre abfällt und ein Lerneffekt eintritt.
GG
Ich habe es nicht bei einem String belassen, sondern bediene mich eines Arrays, in das ich die ensprechenden HTML und PHP Strings eintrage. Diese kann ich separat escapen/parsen und eval() nur auf die PHP Strings anwenden. So umgehe ich vermeintlichen eval()'d code und das Parsen klappt ohne Probleme.