noob-Frage zu preg_replace

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

  • noob-Frage zu preg_replace

    Nabend zusammen

    Ich verzweifel gleich. Ich hab ohne Ende mit der ollen Funktion rumprobiert, aber irgendwie bring ich es nicht auf die Reihe, auch die Suchfkt. hat leider net geholfen, weil ich die Beispiele nicht auf mein Problem umgemmünzt bekomme

    Also: ich hab einen String, und alle darin enthaltenen Ziffern (0-9) sollen einfach daraus entfernt werden. Ist glaub ich super-einfach, aber ich steig durch die Zusammensetzung der Klammer nicht durch

    Thx schonmal für die Hilfe und noch nen schönen Abend,
    Gruß P2oldi

  • #2
    so?
    PHP-Code:
    $test"<!doctype html public \"-//W3C//DTD HTML 4.0 //EN\">
    <html>
    <head>
           <title>Title here!</title>
    </head>
    <body>
          te3\\r\\n4s5t
    </body>
    </html> "
    ;
    echo 
    preg_replace("![0-9]!","",$test); 
    Kissolino.com

    Kommentar


    • #3
      genau so, vielen Dank

      Kommentar


      • #4
        mist, leider reichte das noch nicht so ganz

        PHP-Code:
        preg_replace("![0-9]!","",$charname
        so werden ja nur Zahlen rausgeworfen. Allerdings hat sich das nun etwas verkompliziert

        ich muß jetzt alle Sonderzeichen (inkl. ä, ö, ü, ß) rausnehmen, außer - und _ (sprich erlaubt ist A-Z, a-z, -, _)
        allerdings dürfen diese beiden Sonderzeichen auch nicht am Anfang oder Ende des Strings stehen.

        Mag mir da nochmal jemand unter die Arme greifen bitte?

        Danke schonmal im Voraus,
        Gruß P2oldi

        Kommentar


        • #5
          evt so:

          $string = preg_replace('/[^a-z_-]/i',"",$string);

          teste mal
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            schon fast

            das einzige was noch funktioniert, aber nicht gehen darf ist, daß - und _ noch am Anfang und Ende des Strings stehen bleiben. Die dürfen zwar im allg. im String enthalten sein, aber nur in der Mitte....

            Kommentar


            • #7
              ajo das is easy aber Du willst sicher auch mal selbst was testen...
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                ok, thx trotzdem. Hab mir mal ein Tut gesucht, das auf den ersten Blick sehr verständlich aussieht Wenn's wider Erwarten nicht klappen sollte, frag ich nochmal

                Kommentar


                • #9
                  Hab mir mal ein Tut gesucht, das auf den ersten Blick sehr verständlich aussieht
                  Doch hoffentlich das von PHP-resource

                  Kommentar


                  • #10
                    sorry, muß das Teil nochmal ausgraben

                    funzt jetzt in soweit, das halt alles außer a-z, - und _ im String erlaubt ist. Gut und schön, aber ich bekomm den Anfang bzw. das Ende nicht gebacken, steig auch durchs Tut nicht so wirklich durch

                    PHP-Code:
                    $charnameneu preg_replace('/[a-z-_]/i',"",$charname); 
                    ist das funzende.

                    Wollte nun mittels !, $ und ^ den Anfang und das Ende machen...
                    PHP-Code:
                    $charnameneu preg_replace('!^-_[a-z-_]!-_$/i',"",$charname); 
                    das verändert aber gar nix am String Und so wie ich das verstanden habe, negiert er jetzt (!), das am Anfang (^) ein - oder _ vorkommt, dann eine beliebeige Zahl aus a-z,- und _ und am Ende ($) dann noch einmal negiert die - und _

                    Stimmt wohl so aber nicht... Mag sich nochmal jemand erbarmen bitte? Dann ist auch Ruhe für heute

                    Kommentar


                    • #11
                      Mit PCRE:
                      PHP-Code:
                      $text preg_replace('/(ä|ö|ü)/s'''$text); 
                      Mit str_replace was hier viel schneller und sinnvoller ist:
                      PHP-Code:
                      $text str_replace('ä'''$text);
                      $text str_replace('ö'''$text);
                      $text str_replace('ü'''$text); 

                      Kommentar


                      • #12
                        hmm.... aber das ersetzt ja alle äöü in dem String, das tut ja gar nicht not, weil die obere der beiden von mir geposteten Anweisungen das schon macht. Ich bekomm es einfach nicht gebackt, die erste Anweisung so zu erwitern das die Zeichen "-" und "_" am Anfang und am Ende des Strings abgeschnitten werden

                        Kommentar


                        • #13
                          Probier mal:
                          PHP-Code:
                          <?php
                          $text 
                          preg_replace('/^(-|_*)(.+)(-|_*)$/s'''$text);
                          ?>

                          Kommentar


                          • #14
                            ok, jetzt bin ich total verwirrt, jetzt funzt es überhaupt nicht mehr, auch mein altes nicht ?!?!

                            $test ist nach dem preg_replace immer leer

                            PHP-Code:
                            $charnameneu preg_replace('/[a-z-_]/i',"",$charname);
                            //$charnameneu = preg_replace('/^(-|_*)(.+)(-|_*)$/i', '', $charname);
                            echo "<br>charname alt: ".$charname;
                            echo 
                            "<br>charname neu: ".$charnameneu
                            egal welches der beiden Statements ich versuche, $charnameneu ist immer leer

                            Kommentar


                            • #15
                              Weil du jedes Alphabetische Zeichen löschst!
                              PHP-Code:
                              <?php
                              $text 
                              preg_replace('/^(-|_*)(.+)(-|_*)$/s''\\\\2'$text);
                              ?>
                              Sry, der Regex war falsch.
                              Zuletzt geändert von electr0n; 10.11.2003, 14:23.

                              Kommentar

                              Lädt...
                              X