preg_replace

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

  • preg_replace

    Hallo,

    wie kann ich mit der folgenden Funktion sicherstellen, dass der String modules.php?name=Search&query=&topic=1 nur dann ersetzt wird, wenn nach topic=1 kein "&" wie zum Beispiel bei topic=1&mod=2 folgt.

    PHP-Code:
    function replace_for_mod_rewrite(&$s)
    {
    $urlin =
    array(
    "'(?<!/)modules.php\\?name=Search&query=&topic=([0-9]*)'",
    );

    $urlout = array(
    "search-topic\\1.html",
    );

    $s preg_replace($urlin$urlout$s);
    return 
    $s;

    thx

    Jirka

  • #2
    Einfach mit dem $ operator...
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Danke!

      Habe leider in SelfPHP nix zu den Operatoren gefunden. Wo kann ich dies mit dem $ Operator nachlesen?

      Kommentar


      • #4
        Reguläre Ausdrücke

        Hi Jirka

        Vielleicht hilft Dir diese Seite weiter.

        Gruß Andy
        Es gibt viel zu tun - packen wirs an!!!

        Kommentar


        • #5
          Habe es jetzt mit

          PHP-Code:
          "'(?<!/)modules.php\\?name=Search&query=&topic=([0-9])(?!&)'"
          probiert. Funktioniert aber nur dann, wenn die Zahl nach topic= nur eine Stelle hat. Aber diese Zahl besteht aus einer unbekannten Menge an Ziffern.

          Was muss ich machen, damit es auch mit einer Zahl funktioniert, die mehr als nur eine Ziffer hat?

          Jirka

          Kommentar


          • #6
            HeiDiHo

            Gleich mal sorry wenn ich jetzt Müll poste
            Könnte daran liegen, dass ich mich seither immer wieder um die regulären Ausdrücke gedrückt habe

            Aber könnte das eventuell funktionieren?
            PHP-Code:
            "'(?<!/)modules.php\?name=Search&query=&topic=([0-9]{1-4})(?!&)'"
            Wie gesagt, sorry falls das Müll sein sollte

            Gruß Andy
            Es gibt viel zu tun - packen wirs an!!!

            Kommentar


            • #7
              uiui, was Ihr so zusammenschustert...

              preg_match("#(?<!/)modules.php\?name=Search&query=&topic=([0-9]*)$#",$string);

              Der REgEx geht jetzt davon aus, dass Dein String mit topic=zahl endet
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                Sag ich doch . . . . hab mich bisher darum gedrückt

                Aber ich gelobe Besserung

                Gruß Andy
                Es gibt viel zu tun - packen wirs an!!!

                Kommentar


                • #9
                  Original geschrieben von MelloPie
                  uiui, was Ihr so zusammenschustert...

                  preg_match("#(?<!/)modules.php\?name=Search&query=&topic=([0-9]*)$#",$string);

                  Der REgEx geht jetzt davon aus, dass Dein String mit topic=zahl endet
                  Meiner Meinung nach steht das ([0-9]*) für eine beliebige Zahl, gefolgt von einer beliebigen Anzahl von Zeichen. So das in diesem Fall auch ein "&" nach der Zahl folgen kann.

                  Es soll aber so ein, dass der String

                  modules.php?name=Search&query=&topic=1

                  ersetz wird, aber folgender String nicht

                  modules.php?name=Search&query=&topic=1&mod=2


                  Wobei nach dem & aber auch noch andere Parameter folgen können.


                  Jirka

                  Kommentar


                  • #10
                    Tja da is Deine Meinung falsch [0-9]* steht für eine beliebige Anzahl Ziffern...
                    /[a-z0-9]*/i steht für eine beliebige Anzahl Buchstaben oder Zahlen
                    /[0-9]*[a-z]*/i steht für ewig viele Zahlen gefolgt von ewigst vielen Buchstaben

                    Wenn Du formulieren kannst was Du willst kann man Dir hier sicher helfen...
                    Beantworte nie Threads mit mehr als 15 followups...
                    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                    Kommentar


                    • #11
                      Original geschrieben von PictureArtist

                      Es soll aber so ein, dass der String

                      modules.php?name=Search&query=&topic=1
                      ersetz wird, aber folgender String nicht
                      modules.php?name=Search&query=&topic=1&mod=2
                      Wobei nach dem & aber auch noch andere Parameter folgen können.
                      Jirka
                      Was will denn letzter Satz sagen???
                      Was sind denn erlaubte parameter???
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        Original geschrieben von MelloPie
                        Was will denn letzter Satz sagen???
                        Was sind denn erlaubte parameter???
                        Will sagen, dass eben nur die Strings ersetzt werden sollen, bei denen nach topic=1 kein "&" folgt. So das der String

                        modules.php?name=Search&query=&topic=1&mod=2

                        oder

                        modules.php?name=Search&query=&topic=1&list=3

                        nicht und auch nicht teilweise ersetzt wird.


                        Jirka

                        Kommentar


                        • #13
                          Hast Du meinen regexp mal ausprobiert?
                          Der macht genau das.
                          EDIT:
                          bzw geht davon aus, dass topic nur aus ziffern bestehen darf
                          Zuletzt geändert von MelloPie; 11.04.2003, 14:27.
                          Beantworte nie Threads mit mehr als 15 followups...
                          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                          Kommentar


                          • #14
                            Wie würde es den mit regexp aussehen?

                            Jirka

                            Kommentar

                            Lädt...
                            X