problem mit eval()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

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

    Kommentar


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

      Kommentar


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

        thx

        Kommentar


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

          Kommentar


          • #6
            auch dann kommt die gleiche fehlermeldung

            Kommentar


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

              thx

              Kommentar


              • #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

                Kommentar


                • #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...

                  Kommentar

                  Lädt...
                  X