eval(preg_replace)

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

  • eval(preg_replace)

    Hallo, mal ne frage

    PHP-Code:
                                        if(eval("return preg_replace('/\$([^\s]+)/se','$values[$r][\'$1\']','(($status_id == 3) ? false : true)');")):
                                            echo 
    "JO";
                                        endif; 

    geht so was nicht ein preg_replace in einer eval fkt? wenn ich beide funktionen getrennt mache fkt das. wäre doch toll wenn das in einem ginge - geht das irgendwie?

    gruß

    fra*

  • #2
    geht so was nicht ein preg_replace in einer eval fkt?
    warum sollte es nicht gehen?? Was sagt die fehlermeldung? Doch sicher nicht "Forbidden function in eval on line..."

    Kommentar


    • #3
      ka obs daran liegt aber:

      '$values[$r]['$1']'

      ist schon mal sicherlich falsch..

      Kommentar


      • #4
        der hat die backslashes verschluckt

        PHP-Code:
        eval("return preg_replace('/\$([^\s]+)/se','$values[$r][\"$1\"]','(($status_id == 3) ? false : true)');"
        hab jetzt mal doouble quotes gesetzt obwohl ich nur einfache quotes benutze ... es gibt auch keine fehlermeldung worauf ich schliesse das in dem part '$values[$r][\"$1\"]' was nicht stimmt - aber was

        Kommentar


        • #5
          Es gibt gar keine Fehlermeldung?

          der Code wird also ausgeführt?

          Was erwartest du denn von dem Code?

          Kommentar


          • #6
            ich überleg grad den sinn.. nen preg_replace auf nen boolschen wert???

            Kommentar


            • #7
              na ja der preg_replace ersetzt ja nur den wert aus einem anderen array um die kondition mit eval dann auszuwerten wobie die kondition auch immer anders aussieht

              komisch ist aber folgendes: ich hab das nochmal schlancker gemacht

              PHP-Code:

              $val
              ['id'] = 3;
              if(eval(
              "return preg_replace('/\$([^\s]+)/se','$val[\"$1\"]','(($id == 3) ? false : true)');")):
                  echo 
              "JO";
              endif; 
              da krieg ich jetzt ein
              Parse error: syntax error, unexpected T_BAD_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING in
              höchst merkwürdig - wie gesagt beides getrennt fkt

              Kommentar


              • #8
                Hi,

                wenn ich das richtig verstehe, soll preg_replace "((3 == 3) ? false : true)" ausspucken? Dann ist da ein kleiner
                Fehler im Suchmuster: [^\s] statt [^s]
                Der parse error entsteht durch das wilde Durcheinanderwürfeln von " und '. Bzw. durch falsches escapen.
                So sollte es gehen:
                PHP-Code:
                $val['id'] = 3;
                if(eval(
                'return preg_replace(\'/\$([^\s]+)/se\',\'$val["$1"]\',\'(($id == 3) ? false : true)\');')):
                    echo 
                "JO";
                endif; 
                Du hast ja nicht erklärt, was Du genau vorhast, aber mich beschleicht das dumpfe Gefühl, dass
                Du das wesentlich eleganter lösen könntest.
                LG
                EDIT:
                Du musst noch innerhalb von preg_replace(...) alle einfachen Anführungszeichen escapen (werden
                leider nicht angezeigt, daher wohl auch das [^s]).

                Zuletzt geändert von kuddeldaddeldu; 29.09.2006, 18:02.

                Kommentar

                Lädt...
                X