Text abschneiden mit PHP

16. März 2010  |  Kommentar schreiben   |  Tags: , , , , ,



Bei Facebook teilen

Bei der Programmierung mit PHP kommt es oft vor, dass man Texte/Strings von hinten abschneidet, damit sie Layouttechnisch an der richtigen Stelle passen. Somit wird das Webdesign beibehalten, egal welche Texte vorkommen. Das gilt sowohl für kleine Headlines bei Blöcken mit Breite von 200 Pixel, die maximal 10 bis 20 Zeichen enthalten dürfen, als auch für lange Texte, wovon man einen oder zwei Absätze braucht.

Man kann ganz pauschal mit PHP sagen – bitte ab dem Zeichen xxx einfach abschneiden. Jedoch ist das unschön, weil gegebenenfalls Wörter von Zeichenketten in der Mitte abschnitten werden. Wir stellen hier eine Funktion zur Verfügung, die genau das berücksichtigt.  Diese schneidet bis zum Zeichenlimit plus den Text bis zum nächsten Leerzeichen. Anbei die Funktion:

 

function CropText ($sText, $nCropLimit = 250, $bSetDots = true) {

     if ($nCropLimit<strlen($sText)) {
          if (strpos($sText, " ", $nCropLimit)!==FALSE)
               return substr($sText, 0, $nCropLimit).substr($sText, $nCropLimit, strpos($sText, " ", $nCropLimit) - $nCropLimit).($bSetDots ? " ..." : "");
          else
               return substr($sText, 0, $nCropLimit).($bSetDots ? " ..." : "");
          } else {
               return $sText;
          }

}

Welche Parameter nimmt die Programmierfunktion?

1. $sText – das ist Ihr abzuschneidender Text, Zeichenkette
2. $nCropLimit – stellt den Rahmen des Textes, den Sie erreichen wollen, also nach wie vielen Zeichen soll der Text abschnitten werden, Zahl, Standardwert ist 250 Zeichen
3. $bSetDots – gibt an, ob nach dem Abschneiden 3 Pünktchen hinzugesetzt werden sollen. Ja/Nein, Standardwert ist Ja

Was macht die Funktion?

1. Prüft zuerst ob das Zeichenlimit, nachdem abgeschnitten werden soll, überhaupt erreicht wird. Dazu wird die Länge der Zeichenkette überprüft. Falls nicht wahr, dann wird der Text einfach zurückgegeben.
2. Wenn wahr, dann wird es überprüft, ob es Leerzeichen in dem Text enthalten ist, den wir abschneiden wollen.  Wenn ja, wird der Text abgeschnitten bis zum Zeichenlimit und ab dem Punkt bis zum nächsten Leerzeichen. Auf dieser Art und Weise wird die Lesbarkeit des Textes beibehalten. Wenn nicht wahr, wird der Text genau bis zu dem Zeichenlimit zurückgegeben. In beiden Fällen wird es anhand des Parameters $bSetDots geprüft, ob die Pünktchen nach dem Abschneiden hinzugesetzt werden sollen.

Tipp – Man kann auch über ein Parameter das Leerzeichen, wonach es zwecks richtigem Abschneiden gesucht wird, durch ein Punkt oder etwas anderes ersetzen. Dann schneiden Sie beispielsweise bis zum nächsten Punkt ab Zeichenlimit. Somit erhalten Sie die kompletten Sätze.

Teilen

Hinterlasse eine Antwort

Du musst angemeldet sein, um einen Kommentar abzugeben.