HansP: eval() und Funktionen

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

  1. 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

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. 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.

      1. 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

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
        1. 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.

          1. 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

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
            1. 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?

              1. 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

                --
                Light travels faster than sound - that's why most people appear bright until you hear them speak.
                1. OK, hab ne Lösung gefunden - passt alles - ty

                  1. 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

                    --
                    "If I do not seek to understand what is happening here
                    - then I've got peanuts in my head!"
                    (I. Hosein)
                    1. 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.

                      • nur meine zwo Doppelpfennige -

                      GG

                      --
                      "If I do not seek to understand what is happening here
                      - then I've got peanuts in my head!"
                      (I. Hosein)
                      1. 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.