mehrfach hintereinander vorkommende Zeichen auf eines kürzen?

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

  • mehrfach hintereinander vorkommende Zeichen auf eines kürzen?

    Hi,
    ich steh grad auf´m Schlauch und komm nicht auf die passende Idee.

    Es gehr darum, bestimmte, mehrfach hintereinander vorkommende Zeichen innerhalb eines Strings auf eines zu kürzen, z.b.

    Der String

    "Text Text ------ Text Text ------- Text - Text !!!!!!!!"

    soll in

    "Text Text - Text Text - Text - Text !"

    geändert werden.
    Kommt ein Zeichen (wie das - in dem Beispiel) mehrfach an verschiedenen Stellen vor, soll es nur dann gekürzt werden, wenn es auch an der jeweiligen Stelle aufeinanderfolgend mehrfach vorkommt.

    Es sollen aber nur die ASCII-Zeichen chr() 33-47 und chr() 58-63 gekürzt werden, also nur Sonderzeichen, keine Zahlen und Buchstaben.

    Lässt sich das mit einer Regex machen? Ich weiß leider nicht wie, da die Anzahl der aufeinanderfolgenden Zeichen nicht bekannt ist.

    Danke vorab!

  • #2
    ja, es lässt sich mit einer regex machen.

    es gibt noch mehr quantifier als nur eine bestimmte anzahl. z.b. das + (Plus). Schaus dir mal an.

    Kommentar


    • #3
      Original geschrieben von TobiaZ
      es gibt noch mehr quantifier als nur eine bestimmte anzahl
      Schon klar, weiß ich. Ich bekomm dann nur die Ersetzung bzw. Kürzung auf ein Zeichen nicht hin.

      Kommentar


      • #4
        Davon sehe ich hier leider nichts.

        BTW: könnte dich vermutlich auch auf die Suche verweisen.
        Zuletzt geändert von TobiaZ; 08.01.2006, 17:03.

        Kommentar


        • #5

          Ich hab mir das jetzt erstmal so gebaut

          PHP-Code:
          function shorten_s_chars($text) {
              
          $s_char=array("!","\?","\+","<",">","-","\)","\(","\.","\*");
                  foreach (
          $s_char as $value) {
                  
          $search[]="/".$value.$value."+/";
                  
          $replace[]=stripslashes($value);
                  }
              return 
          preg_replace($search$replace$text); 

          Leider muß ich so jedes Zeichen einzeln benennen und ggf. quotieren. So sind hier erstmal nur die wichtigsten drin.
          Gibts denn irgend ne Möglichkeit, die o.g. benannten Char-Bereiche in der Regex direkt zu benennen, so dass ich die foreach-Schleife nicht benötige?

          Und damit nicht wieder ne Antwort a la "Ja, geht... " o.ä. kommt, hier die Frage: Wie geht das?

          Kommentar


          • #6
            Such mal | auf http://php.net/manual/en/reference.p...ern.syntax.php

            Kommentar

            Lädt...
            X