Regulärer Ausdruck: Position der Suchstrings vertauschen?

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

  • Regulärer Ausdruck: Position der Suchstrings vertauschen?

    Moin Leutz,

    ich habe folgenden regulären Ausdruck:

    Code:
    ~^index.php?(?:.*)(var_one|var_two|var_three)=([^&]+)(?:.+)(var_one|var_two|var_three)=([^&]+)(?:.+)
    (var_one|var_two|var_three)=([^&]+)(?:.*)$~isU
    (Der Umbruch dient nur der Darstellung hier im Forum)

    Dieser macht schon im Prinzip was ich möchte, nämlich, dass alle drei Werte in einem Link der Form

    index.php?var_one=3&var_two=2&var_three=1

    zurückgibt. Innerhalb dieses Links können die Positionen der Werte vertauscht sein. Das klappt auch schon.

    Allerdings stehe ich nun vor dem Problem, dass nicht immer alle drei Werte immer im gegebenen Link verfügbar sind, manchmal auch nur einer. Diesen würde mein Ausdruck aber nicht finden ...

    Kann mir jmd helfen, was ich abändern muss?

    Thx,
    MuH
    Zuletzt geändert von McMuh; 03.05.2007, 09:54.

  • #2
    Re: Regulärer Ausdruck: Position der Suchstrings vertauschen?

    Zunächst mal die Frage: Musst du dir das selber basteln - oder tut's für deinen Anwendungsfall vielleicht auch schon parse_str?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Um genau zu sein ist es das falsche Forum in dem ich es postete, da es sich um einen regulären Ausdruck handelt, den ich später in Javascript benutzen möchte. Allerdings macht die Erstellung des regex ja keine großen Unterschiede.

      Bin auch schon am rumprobieren, ob nicht sowas in der Art möglich ist...

      Code:
      ^index.php?.*(?:(var_one|var_two|var_three)=([^&]+).*)*$
      Also ein Unterausdruck (die ersten runden klammern), der beliebig oft wiederholt wird. Nur leider findet er momentan immer nur einen Wert...

      Kommentar


      • #4
        Du hast dabei die Fragen von wahsaga noch nicht beantwortet
        mal die Frage: Musst du dir das selber basteln - oder tut's für deinen Anwendungsfall vielleicht auch schon parse_str?
        und in JS könntest du window.location.search verwenden und den Querystring anhand von & zerlegen.

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Re: Regulärer Ausdruck: Position der Suchstrings vertauschen?

          Warum suchst du überhaupt schon im Ausdruck nach bestimmten Parameternamen?

          Ich würde einfach alle name=value-Päärchen herausfiltern, diese dann splitten - und dann schauen, ob die mit den gesuchten Namen dabei sind.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            @jahlives : Wenn du mich darauf hinweist, nicht die Frage von Wahsaga beantwortet zu haben, müsste ich dich auch darauf hinweisen meine Frage nicht beantwortet zu haben, die da war: "Kann mir jmd helfen, was ich abändern muss?"
            Ich suche keine Alternativen, sondern einen Lösungsansatz, sonst hätte ich meine Frage anders formuliert. Eh ich hier etwas poste, habe ich bereits sämtliche Alternativen geprüft, die Suche genutzt, und auch Goolge von meinem Problem wissen lassen.



            So, aber b2t:

            Es ist zwar nicht die Lösung die ich anstrebte, aber ebenso gut, quasi im Stil von wahsaga beschrieben; die einzelnen Pärchen gesplittet.
            Vielleicht sollte man diesen Thread aber doch ins JS Forum schieben; PHP ists nun nicht mehr ...


            Code:
            var oRegex = new Object() ;
            
            // Interne Verlinkung?
            oRegex.linkIntern = /^index.php\?.*/i ;
            
            // ... zerpflücken
            oRegex.linkInternCut = /(var_one|var_two|var_three)=([^&]+)/gi ;
            
            ....
            
            // prüfen
            if(oRegex.linkIntern.exec( linkString) != false)
            {
            	var match ;
            		
            	while( ( match = oRegex.linkInternCut.exec( linkString) ) != null )
            	{
            			loesungsArr[p+'_'+match[1]] = match[2];
            	}
            }

            Vielen Dank für eure Hilfestellungen!


            LG
            tom

            Kommentar

            Lädt...
            X