Strings kürzen?

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

  • Strings kürzen?

    also, ich stehe da jetzt schon wieder voll an, weil ich die Regex einfach nicht begreife; ich bräuchte was, das mir folgendes macht:

    $text=preg_replace(alle Zeichenfolgen zwischen 2 Leerzeichen bzw Leerzeichen und <br>'s, die länger als 100 Zeichen sind,mit den ersten 97 Zeichen + "...",$text)

    bitte um Hilfe, bin der totale Nix-Checker

  • #2
    Schau Dir mal die Funktionen
    substr() und strpos() an
    damit kannste Dir das basteln
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      klar aber wie prüfe ich die einzelnen Wörter vom ganzen Text?

      Kommentar


      • #4
        Probier's mal so:

        PHP-Code:

        //    Text kürzen auf x Character
        //    ---------------------------
            
        function text_cut($text,$len){
                if(
        strlen($text)<$len$len=strlen($text);
                
        $neu=substr($text,0,$len);
                
        $stop=false;
                
        $pos=$len-1;
                while(
        $stop==false){
                    
        $c=substr($neu,$pos,1);
                    if(
        $c!=" "){
                        
        $neu=substr($neu,0,$pos);
                        
        $pos-=1;
                    }else{
                        
        $stop=true;
                    };
                    if(
        $pos==0){
                        
        $stop=true;
                        
        $neu=$text;
                    };
                };
                return 
        $neu;
            }; 
        Funktion dann mit
        PHP-Code:
        $kurztext text_cut($langer_text,$textlänge); 
        aufrufen.

        Ist vielleicht nicht die schönste Lösung, aber das sollte funktionieren.

        Gruss

        Bernd
        mens agitat molem

        Kommentar


        • #5
          Noch eine Lösung:

          PHP-Code:
          $preg "((?U)((\040)((.){97})((.){4})(.*)((<br>)|\040)))";
          $text preg_replace("/$preg/","\\4..........\\9",$text); 
          Hinweis: In der Zeile preg_replace gehören vor der 4 und 9 zwei Backslash, das Forum klaut eins.
          Hinter dem <br> kein Leerzeichen.
          Vor der 40 gehört ein \0

          Das Forum klaut alles......

          Vielleicht geht es so:
          $preg = "((?U)((\040)((.){97})((.){4})(.*)((<br>)|\040)))";
          $text = preg_replace("/$preg/","\\4..........\\9",$text);

          Nach dem <br> kein Leerzeichen.
          Zuletzt geändert von BielWeb; 15.10.2002, 11:00.

          Kommentar


          • #6
            juhuu

            das funktioniert ja schon fast perfekt!!! Nur am String-Anfang bzw Ende wills noch nicht so recht...

            Kommentar


            • #7
              Hi,

              ich weß nicht ob Du mich oder yezariel gemeint hast. Wenn Du mich meinst, was klappt nicht so wie Du es habe möchtest?

              Kommentar


              • #8
                jop sorry, meinte dich... mit der variante läßt sich noch zb "blablabalbalbalbablbalabla.usw." posten

                habs ausgetrickst :

                $text = " $text ";
                dann dein Teil
                return trim($text); und funzt! Nur kürzt es auch die Hyperlinks
                Zuletzt geändert von DukeNude; 15.10.2002, 16:02.

                Kommentar


                • #9
                  Hi,

                  Deine Frage war
                  $text=preg_replace(alle Zeichenfolgen zwischen 2 Leerzeichen bzw Leerzeichen und <br>'s, die länger als 100 Zeichen sind,mit den ersten 97 Zeichen + "...",$text)
                  Wie Du richtig erkannt hast kürzt meine Version nicht bei "blablablablablablablabla usw., da ja dort keine Leerzeichen oder ein Zeilenumbruch ist.

                  Um evtl. tags zu entfernen, könnte man das noch hinzufügen
                  $preg = "((?U)(.*)(<)(.*)(..........))";
                  $text = preg_replace("/$preg/","\\2..",$text);
                  Der Text wird dann weiter gekürzt.
                  ( Hinter dem < in der ersten Zeile kein Leerzeichen.)

                  Kommentar


                  • #10
                    hmm also wie sollte das Ding dann aussehen, wenn man alles was (url......)(/url) und (img)...(/img) (mit eckigen Klammern) nicht abschneiden soll?

                    Kommentar


                    • #11
                      wie funktioniert das hier eigentlich:

                      testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest testtesttesttesttesttesttesttesttesttesttest

                      aha, da werden br's hinzugefügt

                      Kommentar


                      • #12
                        hab noch immer keine Lösung gefunden... wie schließe ich bestimmte zeichenketten aus?

                        Kommentar

                        Lädt...
                        X