Klaus: PHP eval() Verwendung?

Hallo,

wie schaffe ich es, dass das folgende Scripts a.a.a,b.b.b,c.c.c ausgeben wird?
Mit meinem Script bekomme ich immer einen Parse Error ausgegeben.

  
$filter = "\$x=\$a.\$b.\$c";  
  
$a = "a";  
$b = "a";  
$c = "a";  
eval($filter);  
echo $x.",";  
  
$a = "b";  
$b = "b";  
$c = "b";  
eval($filter);  
echo $x.",";  
  
$a = "c";  
$b = "c";  
$c = "c";  
eval($filter);  
echo $x;  

  1. Hi,

    wie schaffe ich es, dass das folgende Scripts a.a.a,b.b.b,c.c.c ausgeben wird?
    Mit meinem Script bekomme ich immer einen Parse Error ausgegeben.

    Schon mal die Handbuchseite zu eval konsultiert? Da steht nämlich drin, warum es nicht klappen kann:

    Apart from that the passed code must be valid PHP. This includes that all statements must be properly terminated using a semicolon. 'echo "Hi!"' for example will cause a parse error, whereas 'echo "Hi!";' will work.

    (gibt's auch auf deutsch und zahlreichen anderen Sprachen - dazu dem Link folgen und dort die gewünschte Sprache auswählen)

    $filter = "$x=$a.$b.$c";

      
    Warum benutzt Du "", um dann mühsam die Variablen wieder zu escapen, statt gleich '' zu benutzen?  
      
    Ganz abgesehen davon: statt eval wäre für das Ergebnis eine Function mit 3 Parametern besser geeignet. eval sollte man vermeiden, wenn es geht.  
      
    cu,  
    Andreas
    
    -- 
    [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
    [O o ostern ...](http://ostereier.andreas-waechter.de/)  
      
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.  
    
    
    1. Hi

      Schon mal die Handbuchseite zu eval konsultiert?

      Klar habe ich mir die Funktion im Handbuch angeschaut. Genauso wie ich Laufen gelernt habe, aber dennoch mal hinfallen kann. Wäre es schlimm gewesen, einfach zu schreiben, dass ich das Semikolon im Filter vergessen habe?

      $filter = "$x=$a.$b.$c";

      
      >   
      > Warum benutzt Du "", um dann mühsam die Variablen wieder zu escapen, statt gleich '' zu benutzen?  
        
      Vielleicht weil ich nicht alles weiß, oder aus Gewohnheit.  
        
        
      
      > Ganz abgesehen davon: statt eval wäre für das Ergebnis eine Function mit 3 Parametern besser geeignet. eval sollte man vermeiden, wenn es geht.  
      >   
        
      Ich hoffe nicht, dass Du angenommen hast, dass der abstrakte Code so tatsächlich zum Einsatz kommt.  
      Ich habe den Code abstrahiert, um eine womöglich umständliche Beschreibung zu vermeiden.  
      Am Ende wird der Benutzer in der Lage sein, aus verschiedenen Tabellen, bestimmte Felder zu wählen, die er im Anschluss nach bestimmten Inhalten durchsuchen möchte.  
      Es wird dann per Schleife durch die Tabellen gelaufen und der Filter immer wieder aufs Neue geprüft.  
        
      Letztlich zählt für mich das Ergebnis und Du hast mir geholfen, den Fehler zu finden. Also Lieben Dank!  
        
      Klaus  
      
      
      1. Tach!

        Am Ende wird der Benutzer in der Lage sein, aus verschiedenen Tabellen, bestimmte Felder zu wählen, die er im Anschluss nach bestimmten Inhalten durchsuchen möchte.
        Es wird dann per Schleife durch die Tabellen gelaufen und der Filter immer wieder aufs Neue geprüft.

        Warum genau denkst du, mit eval() Code erzeugen und ausführen zu müssen, anstatt mit den Daten direkt zu hantieren? Es kann gut sein, dass die eval()-Lösung am Ende umfangreicher wird, weil du alle Eventualitäten, unerwünschten Code einzuschleusen, ausschließen musst.

        dedlfix.