Regexp : whitespaces

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

  • Regexp : whitespaces

    hallo,

    ich versuch mich grade mal mit regular expressions.
    habe mir da mal das q-net tutorial durchgelesen (http://tut.php-q.net/)

    jetz hab ich aber n problem: ich will in nem string alle whitespaces ersetzten. laut tut geht das mit \s, aber wenn ich \s schreibe werden nur die "s" ersetzt.
    ok, denk ich mir das \ muss escaped werden. also \\s. wieder nix. gleicher erfolg

    wo is mein fehler?

    PHP-Code:
    $string "Dies ist ein Test-String! (ja? ist er, der da steht wirklick wofür er sich ausgibt?)";
    $string ereg_replace ("([\s $-.+!*'()@:?=&/;]{1,})""_"$string); 
    erzeugt diese ausgabe:
    Die_ i_t ein Te_t_String_ _ja_ i_t er_ der da _teht wirklick wofür er _ich au_gibt_
    ich hoffe mir kann da jemand weiterhelfen. *hoff

    --
    Apache 1.3.26
    PHP 4.3.1
    Apache 1.3.27
    PHP 4.2.1
    MySQL 2.5.1
    SuSE Linux 8.1

  • #2
    Also bei mir geht's mit
    PHP-Code:
    $string str_replace(" ""_"$string); 
    ?
    Zuletzt geändert von ; 31.07.2003, 14:33.

    Kommentar


    • #3
      klar, so ersetzt er die leerzeichen... und so hab ichs bisher auch....

      PHP-Code:
      ereg_replace ("([ $-.+!*'()@:?=&/;]{1,})""_"$string); 
      aber ich will ja auch, dass TAB, RETURN usw. ersetzt werden...
      Apache 1.3.27
      PHP 4.2.1
      MySQL 2.5.1
      SuSE Linux 8.1

      Kommentar


      • #4
        Was soll denn
        Code:
        ("([ $-.+!*'()@:?=&/;]{1,})"
        bedeuten? Könntest Du mir das bitte mal aufschlüssen?

        Kommentar


        • #5
          so gehts auch mit mehreren zeichen

          PHP-Code:
          $string "Dies ist ein Test-String! (ja? ist er, der da steht wirklick wofür er sich ausgibt?)";
          $trans = array ("\n" => "<br>""\t" => "_"" " => "_");
          echo 
          strtr($string$trans ); 
          ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
          und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

          Kommentar


          • #6
            Du meinst sicher
            Code:
            $trans = array ("\n" => "_", "\t" => "_", " " => "_");

            Kommentar


            • #7
              Original geschrieben von Innuendo
              Was soll denn
              Code:
              ("([ $-.+!*'()@:?=&/;]{1,})"
              bedeuten? Könntest Du mir das bitte mal aufschlüssen?
              das is n regulärer ausdruck. und der matched alle zeichen zwischen "[" und "]" und ersetzt sie (auch wenn mehrere aufeinander folgen {1,}) durch EINEN _
              Apache 1.3.27
              PHP 4.2.1
              MySQL 2.5.1
              SuSE Linux 8.1

              Kommentar


              • #8
                teste mal:
                PHP-Code:
                  $string "Dies ist ein Test-String!
                  (ja? ist er, der da steht  wirklick wofür er sich ausgibt?)"
                ;
                echo 
                $string ereg_replace ("([ \\t\\r\\n$-.+!*'()@:?=&/;]{1,})""_"$string); 
                tab kann ich nicht testen, hab grad keinen zur hand
                Kissolino.com

                Kommentar


                • #9
                  Code:
                  $str = preg_replace("!(\r\n)|(\r)|(\n)!s","_",$str); // <-- entfernt umbrüche
                  $str = preg_replace("!( )!s","_",$str); // <-- entfernt leerzeichen
                  h.a.n.d.
                  Schmalle

                  http://impressed.by
                  http://blog.schmalenberger.it



                  Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                  ... nur ohne :-)

                  Kommentar


                  • #10
                    Erstetzt Leerzeichen durch _
                    PHP-Code:
                    $string ereg_replace ("\040""_"$string); 
                    Das Forum klaut Code, vor der 40 ein \0 einfügen.

                    armin

                    Kommentar


                    • #11
                      ich hab's:

                      PHP-Code:
                      $string "Dies ist ein Test-String! (ja? ist er, der da steht wirklick wofür er sich ausgibt?)";
                      $string preg_replace ("([\s$-.+!*'()@:?=&/;]{1,})""_"$string); 
                      Dies_ist_ein_Test_String_ja_ist_er_der_da_steht_wirklick_wofür_er_sich_ausgibt_

                      und noch ne kurze verständnisfrage:
                      der unterschied zwischen preg_replace() und ereg_replace() ist, dass die ne andere syntax verwenden und deshalb das "\s" bei preg_replace() funktioniert, nicht aber bei ereg_replace().
                      Korrekt?

                      Danke für eure Lösungsversuche
                      Apache 1.3.27
                      PHP 4.2.1
                      MySQL 2.5.1
                      SuSE Linux 8.1

                      Kommentar


                      • #12
                        Original geschrieben von my|DCF
                        und noch ne kurze verständnisfrage:
                        der unterschied zwischen preg_replace() und ereg_replace() ist, dass die ne andere syntax verwenden und deshalb das "\s" bei preg_replace() funktioniert, nicht aber bei ereg_replace().
                        Korrekt?
                        Ich sag nur eins: RTFM.

                        Kommentar


                        • #13
                          Danke für deine qualifizierte und sehr intelligente Antwort.

                          Ich habe bereits das Manual gelesen und war mir nur nicht sicher, ob ich das richtig verstanden hatte, dass der einzige unterschied darin besteht, dass preg() die perl-syntax und ereg() eben nicht die perl-syntax unterstützt.

                          Aber da du ja ein experte bist, liegt er sicher unter deinem niveau einfach kurz "ja" (das hat sogar weniger buchstaben, als rtfm... da hättest auch noch zeit gespart) oder "nein" zu schreiben.

                          DANKE!
                          Apache 1.3.27
                          PHP 4.2.1
                          MySQL 2.5.1
                          SuSE Linux 8.1

                          Kommentar


                          • #14
                            du hast es richtig verstanden. daher sollte man eigentlich immer die preg_X functions benutzen. die sind viel besser unter den tutorials findest du was über RegEXp, falls es dich weiterhin interessiert.
                            h.a.n.d.
                            Schmalle

                            http://impressed.by
                            http://blog.schmalenberger.it



                            Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                            ... nur ohne :-)

                            Kommentar


                            • #15
                              Original geschrieben von my|DCF
                              Danke für deine qualifizierte und sehr intelligente Antwort.

                              Ich habe bereits das Manual gelesen und war mir nur nicht sicher, ob ich das richtig verstanden hatte, dass der einzige unterschied darin besteht, dass preg() die perl-syntax und ereg() eben nicht die perl-syntax unterstützt.

                              Aber da du ja ein experte bist, liegt er sicher unter deinem niveau einfach kurz "ja" (das hat sogar weniger buchstaben, als rtfm... da hättest auch noch zeit gespart) oder "nein" zu schreiben.

                              DANKE!
                              Immer schön geschmeidig bleiben und auf den Ton achten.

                              Kommentar

                              Lädt...
                              X