Variable "in" Variable ersetzen

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

  • Variable "in" Variable ersetzen

    Hallo Leute,

    ich hab hier ein problem mit dem ersetzen von Variablen -in- Variablen.

    Beispiel:
    PHP-Code:
    <?php

    $test 
    "Text";
    # $var kommt eigentlich aus der Datenbank
    $var 'dumdidum $test blubb';
    Ich möchte also nun in $var das $test durch die Variable $test (also ihren inhalt) ersetzen... hab nur leider keine Idee, wie ich das machen könnte.
    Hab schon an RegExp gedacht (dann statt $test natürlich {$test} in dem String, ums leichter matchen zu können), allerdings funktioniert das nich ganz:

    PHP-Code:
    <?php

    $var 
    "Text";
    $text 'Dumdidum {$var} lalaa';
    $erg preg_replace("/\\{(.*)\\}/is",eval('return $\\1'),$text);
    # Kann sein, dass hier ein fehler drin ist,hab ich nur schnell (frei) geschrieben

    ?>
    1. Matcht der RegExp den ganzen String ab dem ersten {$var}, also "{$var} lalaa". Ist nicht ganz was ich erreichen wollte (ich bin nochn Newbie im Bereich RegExp)
    2. Bringt eval() nen fehler :
    Warning: Unexpected character in input: '\\' (ASCII=92) state=1 in *******\index.php(94) : eval()'d code on line 1

    Und weils ja noch nich reicht noch ein Parse-Error:

    Parse error: parse error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in *******\index.php(94) : eval()'d code on line 1



    Wäre schön, wenn mir jemand helfen könnte
    Am besten wäre natürlich ne lösung ohne RegExp, aber mir fällt im Moment einfach nichts ein... ich glaub ich steh' aufm Schlauch


    Dankeschön schonmal im Voraus

    Grüße

    fox

    PS: Ist irgendwie blöd, dass man alle \ innerhalb von [.php][./php] 2x schreiben muss, damit sie angezeigt werden...
    Neuere Forenversion? *fg*
    Zuletzt geändert von fox34; 24.11.2005, 16:40.

  • #2
    PHP-Code:
    eval('echo "' $var '";'); 

    Kommentar


    • #3
      Weiss net, ob ich da jetzt was falsch verstehe....wie wäre es damit :

      PHP-Code:
      $a " Morgen";
      $b "Guten".$a;
      echo 
      $b
      oder

      PHP-Code:
      $a " Morgen";
      $b "Guten";
      echo 
      $b."".$a
      (War da nicht was von wegen eval = evil oder so ? *g* )

      Kommentar


      • #4
        Original geschrieben von Tommy75
        (War da nicht was von wegen eval = evil oder so ? *g* )
        Ja, man sollte eval vermeiden.
        Sowas übrigens auch:
        PHP-Code:
        echo $b."".$a

        Kommentar


        • #5
          @onemorenerd : Was ist daran falsch bzw. warum sollte man es vermeiden ?

          Oder andersrum - wie wäre es denn korrekt ?

          Kommentar


          • #6
            PHP-Code:
            echo $b.$a
            wäre korrekt(er). Jede Ausgabe ist ein String, da brauchst du nicht zu casten. Außerdem macht man das eh nicht, in dem man einen Nullstring dranbastelt.

            Aber ich sehe das oft, grad eben wars schon wieder in einem Thread über Zufallszahlen. Woher habt ihr das bloß alle, wer erzählt euch sowas?

            Kommentar


            • #7
              Hi !

              Wo wir gerade dabei sind ... so geht es auch.

              PHP-Code:

              $a 
              "Welt";
              $b "Hallo $a"
              Informationen gibt es auch hier.

              Gruß

              Le Cheffe

              Kommentar


              • #8
                [x] fox34 möchte den Modifikator e kennenlernen und die Verwendung des Modifikators bei preg_replace nachlesen.
                Sunshine CMS
                BannerAdManagement
                Borlabs - because we make IT easier
                Formulargenerator [color=red]Neu![/color]
                Herkunftsstatistik [color=red]Neu![/color]

                Kommentar


                • #9
                  Original geschrieben von Benny-one
                  [x] fox34 möchte den Modifikator e kennenlernen und die Verwendung des Modifikators bei preg_replace nachlesen.

                  Möchte er das?


                  Hab es im Moment so gelöst (so funzt es):

                  PHP-Code:
                  eval('$return = "'.addslashes($result['value']).'";'); 
                  Aber ich denke, eine Lösung mit preg_replace ist wirklich besser...


                  Also quasi...

                  PHP-Code:
                  $return preg_replace("/\\{(.*)\\}/ise","$1",$result['value']);
                  # $result['value'] enthält: Geschrieben am <span id="datum">{$l_day}</span> [...]
                  # $l_day ist selbstverständlich definiert 
                  Da bekomm ich aber diese Fehler:
                  Parse error: parse error, unexpected '}' in *****\class_lang.php(58) : regexp code on line 1

                  Fatal error: preg_replace(): Failed evaluating code: $l_day}</span> [...] in *****\class_lang.php on line 58

                  Zeile 58 ist die Zeile die hier steht.


                  *arghl

                  Hat jemand nen Tipp, wie ich so nicht den ganzen darauffolgenden String matche? sondern eben nur das {$var}, bzw $var?


                  ---

                  @Le_Cheffe: Ja, man weiß ja eben nicht welche Variablen in dem String vorkommen


                  Danke für eure Unterstützung!


                  Liebe Grüße
                  Zuletzt geändert von fox34; 24.11.2005, 14:01.

                  Kommentar


                  • #10
                    wenn du den Modifikator e verwendest, dann steht der PHP Code bei der preg_replace Anweisung zwischen " und ", und um ein z.b. einen text mit reinzubekommen nimmt man ' und '

                    beispiel
                    PHP-Code:
                    $return preg_replace("/\{(.*)\}/ise""strlen('abc')",$result['value']); 
                    Wenn du den Modifikator e verwendest, greift man nicht mit $1 sondern mit \\1 auf den "rückgabewert" deines RegEx zu.

                    *ungetestet* -> im manual ist da ein gutes beispiel für die verwendung von 'e'
                    Sunshine CMS
                    BannerAdManagement
                    Borlabs - because we make IT easier
                    Formulargenerator [color=red]Neu![/color]
                    Herkunftsstatistik [color=red]Neu![/color]

                    Kommentar


                    • #11
                      Ah! Also in diesem Fall einfach "\\1"...


                      *gleich mal ausprobier*


                      Hab ich im manual gar nich gesehen, muss mir wohl mal die Augen waschen...

                      Danke!


                      *hüstel*
                      Parse error: parse error, unexpected '}' in *****\class_lang.php(58) : regexp code on line 1

                      --> RegEx passt nich, ich hab das Problem gefunden:
                      Der matcht vom ersten { bis zum letzen }
                      Wie krieg ich php nun dazu von einem { bis zum } zu matchen...

                      -- Modifier "u"... ARGHL

                      So, und nun mit ' FUNZTS

                      Vielen Dank nochmal an alle


                      Grüße,
                      .fox


                      *ERLEDiGT*


                      PS: Für diejenigen, die vllt das selbe Problem haben:

                      PHP-Code:
                      $var preg_replace("/\\{(.*)\\}/isUe",'\\\\1',$var); 
                      Zuletzt geändert von fox34; 24.11.2005, 15:53.

                      Kommentar

                      Lädt...
                      X