Backreferces als var

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

  • Backreferces als var

    Äh hallo, wenn ich ein regexp mit dem pattern benutze:
    (1)(.*?)(1), dann kann ich doch mit \2 auf alles was zwischen zwei einsen steht.

    Ihr kennt doch string variablen zuweisungen in form:
    PHP-Code:
    $blah="text";

    echo ${
    "blah"}; 
    echo gibt text aus.

    ist genau das, was da steht mit backreferences möglich?

    also in form von ${"\\2"} klappts nicht, aber es gibt einen weg, dass weiß ich, ich kann mich nur nicht erinnern.

    ich möchte keine workarounds, sondern eben diese möglichkeit eine backreferece als var zu nehmen
    SQL Injection kitteh is...

  • #2
    so wie du dir das vorstellst, geht es nicht.

    du musst erst einmal das gesuchte eine neuen var zuweisen.

    dann kannst du es ausgeben.

    schaue dir mal die preg-funktionen im manual an.
    - preg_match_all()
    - preg_replace()
    usw.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      dafür kennt zb preg_match() einen dritten parameter als array wo die gefundenen teile reingeschrieben werden ..
      aufrufen dann mit $array[2];
      mfg,
      [color=#0080c0]Coragon[/color]

      Kommentar


      • #4
        Ja, die backreference is ja auch nur die vereinfachte form von preg_match und im array[2] steht doch das selbe wie in "\\2".
        Aber mit dém array als ${array[2]} würds also gehen, oder wie?
        SQL Injection kitteh is...

        Kommentar


        • #5
          OHNE den geschweiften klammern bitte

          PHP-Code:
          echo $array[2]; 
          du kannst das auch testen und das array $array mit hilfe von print_r() mal ausgeben. dann siehst du, was gefunden wurde.
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            doch, mit geschweiften Klammern für das, was er will
            PHP-Code:
            ${$array[2]} 
            nur mit dem 2. Dollarzeichen.
            hopka.net!

            Kommentar


            • #7
              Danke, leider hab ich nicht selten das gefühl, als würde man mir nicht zuhören
              SQL Injection kitteh is...

              Kommentar


              • #8
                Original geschrieben von Hopka
                doch, mit geschweiften Klammern für das, was er will
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Ich möchte doch nicht den wert der backreference.

                  was bringts mir wenn ich den string
                  "Ich mag kein 1wert1";
                  durch "Ich mag kein wert" ersetzte?

                  wenn ich aber für $wert="Fisch" habe;

                  so wird wert durch das backrefrece array[2] (in dem jetzt ja wert) steht
                  als var durch ${$array[2]} //lautet Fisch
                  SQL Injection kitteh is...

                  Kommentar


                  • #10
                    SO LEUTE, AUFGEPASST.

                    Ihr könnt hier ne menge lernen, dies klappt, warum auch immer:

                    ${"\\2"} klappt nicht
                    '${'."\\2".'}' KLAPPT
                    warum auch immer dies kappt, es funzt:

                    PHP-Code:
                    $str="copyright=by me&id=Guestbook&date=1999";
                    $raw="Written by %copyright%. This program is %id% and made %date%";

                    parse_str($str);
                    $raw=preg_replace("/(%)(\w+)(%)/ie",'${'."\\2".'}',$raw);
                    echo (
                    $raw); 
                    LOL, erschlagt mich leute, ich habs durch zufall rausgefunden, und es geht, warum auch immer

                    Ich sagte doch, dass es geht, vertraut mir ruhig, leute
                    SQL Injection kitteh is...

                    Kommentar


                    • #11
                      Hmm, das ist komisch

                      ich hätte das so gemacht:

                      PHP-Code:
                      $raw=preg_replace("/%(w+)%/ie", ${"$1"}, $raw); 
                      @Abraxax:
                      http://php.net/variables.variable
                      hopka.net!

                      Kommentar


                      • #12
                        Original geschrieben von Hopka
                        @Abraxax:
                        http://php.net/variables.variable
                        jaja. schon klar. ich weiss ja, wie das funktioniert.

                        aber wo bitte steht in seiner frage, dass er dynamische vars haben will...
                        wahrscheinlich sorgte das nicht-sein nur für verwirrung...
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          ich weiß nicht mal, obs stimmt.
                          Hopka,
                          nach deinem muster, was würde aus diesem String werden:
                          "hallo %wert%" ?
                          SQL Injection kitteh is...

                          Kommentar


                          • #14
                            PHP-Code:
                            "hallo %wert%"
                            // wird zu
                            "hallo " $wert 
                            hopka.net!

                            Kommentar


                            • #15
                              oh, lol, dann hab ich ja doch dynamische vars gemeint.
                              Dachte mir vorher, nein, die mein ich nicht.
                              sorry für den streß
                              SQL Injection kitteh is...

                              Kommentar

                              Lädt...
                              X