[REGEX] Regulärer Ausdruck: Was mache ich falsch?

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

  • [REGEX] Regulärer Ausdruck: Was mache ich falsch?

    Hiho, ich versuche nun schon eine Weile einen Dateiname mittels Regex zu verändern. Aus 1234_bla_blub.php möchte "blub" ausschneiden. Der Code sieht bisher folgendermassen aus:

    PHP-Code:
    <?php
    $f 
    '1234_bla_blub.php';
    echo 
    preg_replace("/([0-9]{4})_[.+]_([.+])\.php/i""\\2"$f);
    ?>
    (beim zweiten Parameter sind natürlich zwei Backslashes, das Forum...)

    ausgegeben wird nun aber einfach der unmodifizierte inhalt der Variablen $f, eigentlich sollte ja "blub" rauskommen. An was liegt das? thx
    Zuletzt geändert von sili; 22.09.2004, 21:45.

  • #2
    ausgegeben wird nun aber einfach die Variable $f, sie wird also nicht verändert. An was liegt das?
    Hab dein Pattern nicht angesehen, aber wenn du die var f verändern willst, solltest du $f = preg... verwenden, und nicht nur die RÜCKGABE von preg AUSgeben.

    Kommentar


    • #3
      danke, aber das ist nicht das problem
      ist ja nur ein simples beispiel. die ausgabe sollte schlussendlich einfach "blub" lauten.

      Kommentar


      • #4
        danke, aber das ist nicht das problem
        das hast du aber geschrieben...

        generell würd ich mal den . escapen, dass funzt je nach server nicht.

        Kommentar


        • #5
          hmm,

          nimm mal bitte die .+ aus den [ ] raus, die haben dort nicht wirklich etwas zu suchen ... also, laß die [] weg ...

          sonst findest du einen text, bestehend entweder aus einem zeichen . oder +, an dieser stelle. der punkt in characterklassen braucht (afaik) nicht escaped werden, außerhalb dagegen schon ...
          Zuletzt geändert von derHund; 22.09.2004, 21:47.
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            Original geschrieben von TobiaZ
            das hast du aber geschrieben...
            besser?

            Original geschrieben von TobiaZ
            generell würd ich mal den . escapen, dass funzt je nach server nicht.
            stimmt, habe ich vergessen funktionieren tut es aber immer noch nicht.

            Original geschrieben von derHund
            hmm,

            nimm mal bitte die .+ aus den [ ] raus, die haben dort nicht wirklich etwas zu suchen ... also, laß die [] weg ...

            sonst findest du einen text, bestehende enweder aus . oder +, an dieser stelle. .der punkt in characterklassen braucht (afaik) nicht escaped werden, außerhalb dagegen schon ...
            kannst du meinen code verändern? ich verstehe nicht genau wie du das meinst

            Kommentar


            • #7
              kannst du meinen code verändern? ich verstehe nicht genau wie du das meinst
              kann ich *g

              du kannst btw innerhalb einer zeichenklasse keine quantifier angeben (wäre auch total sinnfrei), somit wird das + hundert pro als + und nicht als 'ein oder beliebig viele' erkannt ...
              Code:
              /([0-9]{4})_.+_(.+).php/is
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                Wau! Es geht Vielen Dank

                edit: nur noch eine kleine erweiterung

                wenn die datei so aussieht: 1234_bla_blub_blub.php sollte blub_blub rauskommen. wie erreich ich das?
                Zuletzt geändert von sili; 22.09.2004, 22:13.

                Kommentar


                • #9
                  OffTopic:
                  Wau!
                  das sollte eigentlich der Hund sagen...

                  Kommentar


                  • #10
                    genau

                    Kommentar


                    • #11
                      wenn die datei so aussieht: 1234_bla_blub_blub.php sollte blub_blub rauskommen. wie erreich ich das?
                      ach, da gibts ettliche methoden ...
                      Code:
                      /\d{4}_[^_]+_(.+)\.php/iU
                      *wuff*
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        Original geschrieben von sili
                        kannst du meinen code verändern? ich verstehe nicht genau wie du das meinst
                        nimm mal bitte die .+ aus den [ ] raus, die haben dort nicht wirklich etwas zu suchen ... also, laß die [] weg ...
                        was war daran so schwer zu verstehen ...?
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Original geschrieben von derHund
                          ach, da gibts ettliche methoden ...
                          Code:
                          /\d{4}_[^_]+_(.+)\.php/iU
                          *wuff*
                          danke

                          Kommentar

                          Lädt...
                          X