Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Inhalte eines Strings zurückliefern

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Inhalte eines Strings zurückliefern

    Guten Abend,

    leider scheine ich mit regulären Ausdrücken nicht sonderlich gut zurecht zu kommen und stehe vor einem Problem. Angenommen ich habe folgende Zeichenkette.

    Code:
    <% parameter1="wert" parameter2="wert" %>
    Ich überprüfe mittels

    Code:
    /\<\%(.*)\%\>/isUe"
    überprüfen, ob überhaupt etwas mit der Struktur "<% ... %>" gefunden werden kann. Das klappt wunderbar. Mir ist nur schleierhaft, wie ich an die einzelnen Parameter und deren Werte kommen kann. Dazu muss vielleicht noch gesagt werden, dass unterschiedliche Anzahlen von Parametern möglich sein können.


  • #2
    Du musst eben noch ein Muster für ein Attribut festlegen und es in die Guppierung mogeln. Hinter der Gruppierung müsstest du dann wohl noch einen Quantifier ergänzen.
    http://hallophp.de

    Kommentar


    • #3
      Danke für den Hinweis. Mal schauen, ob ich das so hinbekommen werde.

      Kommentar


      • #4
        Zitat von Anyone Beitrag anzeigen
        Mir ist nur schleierhaft, wie ich an die einzelnen Parameter und deren Werte kommen kann.
        In dem du ein entsprechendes Suchmuster formulierst.

        Dazu muss vielleicht noch gesagt werden, dass unterschiedliche Anzahlen von Parametern möglich sein können.
        Dann lässt du halt beliebig viele Wiederholungen dieses Musters zu.

        Kommentar


        • #5
          Nach einigen Versuchen habe ich es fast hinbekommen.

          Code:
          /\<\% type=\"(.*?)\" \%\>/isU
          Das Suchmuster funktioniert beispielsweise bei

          Code:
          <% type="value" %>
          doch bei

          Code:
          <% type="value" parameter2="value" %>
          funktioniert das Muster leider nicht mehr völlig korrekt. Beim ersten Beispiel wird der Wert des Parameters erfolgreich ohne Anführungsstriche zurückgeliefert. Beim zweiten wird nicht nur der Wert des ersten Parameters, sondern auch den des zweiten zurückgeliefert.

          Kommentar


          • #6
            Na dann solltest du mal den Inhalt des Parameter-Values noch etwas strikter fassen - bspw. so, dass alles ausser " drin vorkommen darf.

            Kommentar


            • #7
              wenn du mit dem regex nicht zurecht kommst, würde ich empfehlen benutze string-parsing funktionen..
              Eine erste Idee:
              -> Inhalt von <% ... %> nehmen und trim() anwenden
              -> erstes vorkommen von "=" feststellen (bis dahin ist param name)
              -> " abziehen und nächsten vorkommen von " feststellen (bis dahin ist value)
              usw, bis der string "alle" ist.

              Kommentar


              • #8
                Oder hier ein sehr schönes Tutorial für den Pattern
                Der RegExp-Evaluator - RegExp-Tutorial

                mfg Tobby

                Kommentar


                • #9
                  So ich habe jetzt seit fast zwei Stunden sehr viele Möglichkeiten durchprobiert und schaffe es einfach nicht. Selbst mit den verschiedensten Gruppierungsmöglichkeiten und Aliase habe ich es probiert.

                  PS: Das Tutorial ist super, aber irgendwie konnte ich das nicht wirklich auf mein Problem anwenden.

                  Kommentar


                  • #10
                    Hmm... hast du das Problem mal in 2 Teilprobleme zerlegt? Schnapp' dir erst sämtlichen Inhalt der zwischen <% und %> steht und wende darauf einen zweiten, simpleren Ausdruck an.
                    http://hallophp.de

                    Kommentar


                    • #11
                      Danke Asipak, an den ersten Parameter komm ich nun erfolgreich heran:

                      PHP-Code:
                      preg_match("/\<\%(.*)\%\>/isU"$file$result);
                      preg_match("/(.*)=\"(.*)\"/isU"$result[1], $row);
                      print_r($row); 
                      Wie ich jedoch an die Werte einer dynamische Anzahl von Parametern gelange bleibt mir weiterhin ein Rätsel.

                      Kommentar


                      • #12
                        [MAN]preg_match_all[/MAN]
                        "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

                        Kommentar


                        • #13
                          Zitat von Destruction Beitrag anzeigen
                          [MAN]preg_match_all[/MAN]
                          PHP-Code:
                          preg_match("/\<\%(.*)\%\>/isU"$file$result);
                          preg_match_all("/(.*)=\"(.*)\"/isU"$result[1], $row);
                          print_r($row); 
                          Soweit alles korrekt, jedoch werden nun die Werte beider Parameter aus irgendeinem Grund vertauscht. Also Parameter1 besitzt nun den Wert des Parameters2 und umgekehrt.

                          Kommentar


                          • #14
                            Zitat von Anyone Beitrag anzeigen
                            Soweit alles korrekt, jedoch werden nun die Werte beider Parameter aus irgendeinem Grund vertauscht. Also Parameter1 besitzt nun den Wert des Parameters2 und umgekehrt.
                            Nicht nachvollziehbar. Dein Code angewandt auf
                            PHP-Code:
                            $file '<% parameter1="wert1" parameter2="wert2" %>'
                            liefert
                            Code:
                            Array
                            (
                                [0] => Array
                                    (
                                        [0] =>  parameter1="wert1"
                                        [1] =>  parameter2="wert2"
                                    )
                                [1] => Array
                                    (
                                        [0] =>  parameter1
                                        [1] =>  parameter2
                                    )
                                [2] => Array
                                    (
                                        [0] => wert1
                                        [1] => wert2
                                    )

                            Kommentar


                            • #15
                              Zitat von ChrisB Beitrag anzeigen
                              Nicht nachvollziehbar. Dein Code angewandt auf
                              PHP-Code:
                              $file '<% parameter1="wert1" parameter2="wert2" %>'
                              liefert
                              Code:
                              Array
                              (
                                  [0] => Array
                                      (
                                          [0] =>  parameter1="wert1"
                                          [1] =>  parameter2="wert2"
                                      )
                                  [1] => Array
                                      (
                                          [0] =>  parameter1
                                          [1] =>  parameter2
                                      )
                                  [2] => Array
                                      (
                                          [0] => wert1
                                          [1] => wert2
                                      )
                              Ah ich Dummkopf. Ich sollte mir vielleicht einmal eine Brille besorgen. Natürlich hast du recht und ich bedanke mich vielmals für eure Hilfe.

                              Kommentar

                              Lädt...
                              X