problem mit eval()

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • problem mit eval()

    hi, ich komm nich so ganz mit der eval function klar. ich will templates aus der db holen und die enthaltenen variablen mit hilfe von eval berücksichtigen. dass haut aber nicht hin trotz mehrer versionen nicht hin (warum nutzt man eigentlich . und \ bei strings?)...hier mal der code:

    PHP Code:
    <?php
        
    include("inc/config.php");
        include_once(
    "inc/functions.php");
        
    $test "BLALALALA";
        
    $template gettemplate("mid_filesform",1);
        eval (
    "\$text1 = \"".$template."\";");
        eval (
    "\$text2 = \"$template\";");
        eval (
    "\$text3 = \".$template.\";");
    ?>
    und hier die meldung

    Code:
    Parse error: parse error, unexpected T_STRING in /usr/local/httpd/htdocs/kunden/html/test.php(6) : eval()'d code on line 4
    
    Parse error: parse error, unexpected T_STRING in /usr/local/httpd/htdocs/kunden/html/test.php(7) : eval()'d code on line 4
    
    Parse error: parse error, unexpected T_STRING in /usr/local/httpd/htdocs/kunden/html/test.php(8) : eval()'d code on line 4
    thx 4 help

  • #2
    Re: problem mit eval()

    (warum nutzt man eigentlich . und \ bei strings?)
    den punkt benutzt man um zwei strings zu verketten.

    bsp:
    "hallo "."welt" ergibt das bekannte "hallo welt".

    $var1 = "hallo ";
    $var2 = "welt";
    $var3 = $var1.$var2; //ergibt ebenso "hallo welt" als inhalt von $var3

    der backslash ist ein zeichen mit sonderbedeutung innerhalb von strings.
    z.b. einen zeilenumbruch erzeugt man mit "\n", was als ein zeichen gewertet wird. ebenso "\t" für den tabulator.

    wenn man jetzt in einem string ein zeichen haben will, das eigentlich eine sonderbedeutung hat, man aber die ganz normale bedeutung des zeichens meint, muss man dies ja auch irgendwie kennzeichnen
    z.b. doppelte anführungszeichen " begrenzen normalerweise einen string, aber was wenn du wirklich ein " innerhalb eines strings haben willst?

    dann schreibt man einen backslash vor das entsprechende zeichen, um es von seiner sonderbedeutung zu befreien - das nennt man auch 'escapen'.

    bsp:
    "dies ist ein string, der ein \" doppeltes anführungszeichen enthält"

    und wenn man den backslash selber meint, ohne seine sonderbedeutung, muss man diesen ebenfalls escapen, indem man ihm einen weiteren backslash voranstellt:
    "in diesem string befindet sich ein \\ backslash"
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Comment


    • #3
      danke für die ausführliche erklärung, das bringt mich nen schritt weiter

      Comment


      • #4
        mein eval problem bekomme ich trotzdem nicht im griff, hat denn noch einer nen tip für mich?

        thx

        Comment


        • #5
          versuchs mal mit
          PHP Code:
          eval ("\$text3 = \"".$template."\";"); 
          pder
          PHP Code:
          eval ("\$text3 = \"$template\";"); 

          Comment


          • #6
            auch dann kommt die gleiche fehlermeldung

            Comment


            • #7
              kann mir denn keiner mit dem sch**** eval() helfen? machs im moment mit erreg_replace, aber das gefällt mir nich...HELP

              thx

              Comment


              • #8
                also bei mir gehts so:
                PHP Code:
                <?php
                eval ("\$variable01 = \"".$geparster_code."\";");
                return 
                $variable01//da du das wahrscheinlich in einer Funktion hast?!
                ?>
                bist du dir sicher, das dein von eval() bearbeiteter Code korrekt ist und keine Fehler produziert ??

                gruss

                Comment


                • #9
                  hmm, ich raff das nicht...ich denke mal der code produziert keine fehler, ich hol mir eigentlich nur den html code aus der db, der hier und da mal eine variable enthält. eval() wollte ich eigentlich nutzen, nachdem mir meine funktion das template zurückgegeben hat, also nicht innerhalb der function. mit erreg_replace habe ich keine probleme...bin echt ratlos...

                  Comment

                  Working...
                  X