Ankündigung

Einklappen
Keine Ankündigung bisher.

Text bei Überlänge kürzen und ... anhängen

Einklappen

Neue Werbung 2019

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

  • Text bei Überlänge kürzen und ... anhängen

    Wer nur einen Teil seines Strings anzeigen lassen möchte, wie zum Beispiel nur 20 Zeichen, dem hilft evtl folgender Schnipsel:

    PHP-Code:
    <?php
      
    function textcut($str,$len=20) {
          
    $str trim($str);
        if(
    strlen($str)<$len) {
            return 
    $str;
        } else {
            return 
    substr($str,0,$len-3) .'...';
        }
      }
    ?>
    Hier wird bei längerem Text einfach ein ... angehängt und ein paar Zeichen weggelassen gut für Texte mit Tooltipps etc.

    Wahlweise mit optionalem Parameter für Zeichenanzahl

    Grüße
    Da Psy
    "Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)


  • #2
    Manman, Psycho, gehst ja richtig ab heute Noch Langeweile? Dann kannste hier ja noch ergänzen:
    - "Cutoff": Wenn ein String 21 Zeichen lang is, macht es wenig Sinn ein Zeichen abzuschneiden und dafür 3 anzuhängen
    - Trennung nach Wörtern: Naja, eben nicht innerhalb von Wörtern. Wie siehtn das aus
    Nicht jeder Fehler ist ein Bug.

    Kommentar


    • #3
      Ich versuchs mal
      PHP-Code:
      <?php
      <?php
      function textcut($str,$len=20$hardlimit null) {
        
      $str trim($str);
        if (
      $hardlimit === null$hardlimit $len;
        elseif (
      $hardlimit $len$hardlimit $len $hardlimit;
        if(
      strlen($str) >= $hardlimit) {
          
      $array explode (' '$str);
          
      $str '';
          while ((
      mb_strlen ($str) < $len) && (mb_strlen($str) + mb_strlen($array[0] < $hardlimit) {
            
      // Do as long as the string has not reached $len and the next
            // word will not exceed hardlimit
            
      $str .= array_shift ($array) . ' ';
          }
          
      $str .= '...'// leave trailing slash but append three little dots ^^
        
      }
        return 
      $str;
      }
      ?>
      Nicht jeder Fehler ist ein Bug.

      Kommentar


      • #4
        hmm darf ich auchmal?


        PHP-Code:
        <?php
        function textcut($str$len 10)
        {
            
        $array explode(' '$str);
         
            if (
        count($array) > $len)
            {
                 for (
        $i 0$i $len$i++)
                 {
                     
        $string .= $array[$i] . ' ';
                 }
                 
        $string .= '...';
         
                  return 
        $string;
            }
            return 
        $str;
        }
        echo 
        textcut("Das ist ein Text mit mehr als 10 Woertern, nämlich Elf.");
        ?>
        Ambience
        Ich gebe gerne ICQ-Support gegen ein kleines Endgelt.

        Kommentar


        • #5
          Was Ambience vergaß zu erwähnen: Er kürzt auf x Wörter, wir allerdings aus (maximal) x Zeichen. Da hab ich aber auch was einfacheres
          PHP-Code:
          <?php
          function textcut ($str$wordcut 10)
          {
            
          $array explode (' '$str);
            if (
          count($array) > $wordcut) {
              
          $array array_slice ($array0$wordcut);
              
          $array[] = '...';
            }
            return 
          implode (' '$array);
          }
          ?>
          Alternativ
          PHP-Code:
          <?php
          function textcut ($str$wordcut 10)
          {
            
          $array array_chunk(explode (' '$str),$wordcut);
            if (
          count ($array) > 1) {
              
          $array[0][] = '...';
            }
            return 
          implode (' '$array[0]);
          }
          ?>
          Jaja, ich bin nen Klugscheißer
          Nicht jeder Fehler ist ein Bug.

          Kommentar


          • #6
            Wenn man nach x zeichen jedoch nicht innerhalb eines wortes trennen will gibt es doch eine viel einfachere Methode, nämlich wordwrap (PHP: wordwrap - Manual)
            Das sieht dann in etwa so aus:
            PHP-Code:
            function textcut($str,$len=20)
            {
               
            $ret explode("||||",wordwrap($str,$len,"||||"));
               return 
            $ret[0]." ...";

            Kommentar


            • #7
              Lol, gibt das jetzt, wer hat den kürzesten Code battle?

              So, NOCHN Klugscheißer hier?

              Ambience
              Ich gebe gerne ICQ-Support gegen ein kleines Endgelt.

              Kommentar


              • #8
                Was heißt klugscheißer...
                aber wieso eine eigene funktion schreiben, wenn es bereits eine Funktion für diesen Zweck gibt?

                Aber ist ja egal. Es gibt einfach mehrere Möglichkeiten um an ein Problem heran zu gehen.

                Kommentar


                • #9
                  Wollte sich nur wichtig machen :P

                  So nebenbei, damit nicht arg ins Offtopic geschlittert wird:

                  Einige Funktionen hier kürzen ja nur anhand von Wörtern, aber nicht von Zeichen. Das ist ja nicht gewollt (zumindestens bei dem Codeschnipsel). Was ist, wenn man 10 ellenlangen Wörter hat? Nicht der Sinn in Tabellenspalten oder ähnliches, Zeichen sollen bedacht werden

                  Wörter sind gut für preview von News oder sowas in der Art

                  Anwendungsbeispiele?
                  "Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)

                  Kommentar


                  • #10
                    Siehst du das Smilie in meinem Beitrag? EMOTICON...

                    Damit wollte ich mich nicht wichtig machen...

                    Ambience
                    Ich gebe gerne ICQ-Support gegen ein kleines Endgelt.

                    Kommentar


                    • #11
                      Zitat von Ambience Beitrag anzeigen
                      Siehst du das Smilie in meinem Beitrag? EMOTICON...

                      Damit wollte ich mich nicht wichtig machen...

                      Ambience
                      Ich habe das nicht übersehen, aber dein Beitrag war so nichtssagend und unnötig und trug überhauptnicht zum Thema bei. Ich finde sowas in Ordnung in anderen Threads ausserhalb von den Foren "Tutorials" und "Codeschnipsel", wo es wichtig ist, dass nur das nötigste steht.

                      Just my 2 cents, back 2 topic pls
                      "Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)

                      Kommentar


                      • #12
                        Code:
                        function wwrap($text,$length=20,$tolerance=3){ 
                          $pos=strrpos(substr($text,$length,$tolerance)," ");
                          if (!$pos) {
                             $pos=strrpos(substr($text,$length-$tolerance,$tolerance)," ");
                             if ($pos) $pos=$pos-$tolerance;
                          }
                          if (!$pos) $pos=0;
                          return substr($text,0,$length+$pos)."[...]";
                        }
                        Text auf die Länge $length zukürzen, jedoch wenns geht am wortende,mit einer Toleranz von $tolerance Zeichen. wenn jedoch zulänge Wörter an betreffender Stelle stehen wird erbarmungslos gekappt. vorteil gegenüber den anderen beispielen: die länge ist nach beiden seiten der schnittpunktes abgesucht, aber begrenzt.

                        Kommentar


                        • #13
                          Siehst du den Smilie (:P) in seinem Beitrag? Er auch nicht
                          Nicht jeder Fehler ist ein Bug.

                          Kommentar


                          • #14
                            Zitat von Ambience Beitrag anzeigen
                            Lol, gibt das jetzt, wer hat den kürzesten Code battle?

                            So, NOCHN Klugscheißer hier?
                            Na sicher .

                            Wer hat den kürzesten?

                            Basierend auf nendrews Vorschlag:

                            PHP-Code:
                            function t($s,$l){$r=split($m=md5($s),wordwrap($s,$l,$m));return strlen($s)<$l+3?$s:$r[0]."...";} 
                            Und der "Bug" wenn ein |||| im Text vorkommt ist auch behoben.

                            Wer bietet weniger?
                            Create your own quiz show.

                            Kommentar

                            Lädt...
                            X