In diesem kleinen PHP-Tutorial zeige ich eine Funktion um Texte automatisch zu kürzen.
Mit dieser Funktion kannst du einen übergebenen Text-String kürzen und zum Beispiel drei Punkte oder etwas anderes am Schluss anfügen, die Möglichkeiten sind sehr vielfältig.
Inhaltsverzeichnis
Die ganze Funktion
Hier erstmal die Funktion im Ganzen:
/** * Kürzt einen übergebenen Text * * @param string $text String der gekürzt werden soll * @param int $length [Optional] Standardwert ist 50 * @return string Gibt gekürzten Text zurück */ function textShortener(string $text, int $length = 50) { if (strlen($text) > $length) { $text = substr($text, 0, $length) . "..."; $string_ende = strrchr($text, " "); $text = str_replace($string_ende, "...", $text); } return $text; }
Parameter übergeben
Als erstes, was kann an diese Funktion übergeben werden?
$text
: der Text der gekürzt werden soll$leng
th: die Länge des gekürzten Textes
Vor $text
steht noch string
, das bedeutet das nur Text übergeben werden darf und vor $leng
th steht int
, das bedeutet es sind nut Ganzzahlen erlaubt.
Diese Zusätze muss man nicht machen, aber wenn man es macht und man übergibt etwas anderes dann entsteht ein Fehler, do ist man gezwungen das richtige zu übergeben.
$length = 50
bedeutet für die Variable $leng
th wird standardmäßig immer 50 genommen wenn man nichts anderes angibt.
Wenn man zum Beispiel 75 bei $leng
th übergibt dann wird der Standardwert von 50 mit 75 überschrieben.
If-Abfrage
Als nächstes kommt eine if-Abfrage: if (strlen($text) > $length)
.
In dieser if-Abfrage wird mit strlen()
geprüft ob der übergebene Text länger ist als die angegebene Länge von $leng
th.
Denn nur dann macht es Sinn den Text auf die gewünschte Länge zu kürzen.
Innerhalb der if-Abfrage
$text = substr($text, 0, $length) . "...";
Die Funktion substr()
bekommt den als ersten Parameter den Text.
Als zweiten die Stelle ab der gekürzt werden soll, in diesem Fall ist das 0
(Null) und bedeutet von ganz vorne. Würdest du zum Beispiel 5 übergeben, dann würde ab dem sechsten Zeichen gekürzt, denn es beginnt bei Null zu zählen.
Als drittes wird mit $leng
th angegeben auf welche Länge gekürzt werden soll.
Bei $leng
th ist mit dem Punkt und "..."
noch eine Zeichenkette angehängt, in diesem Fall sind es drei Punkte.
Die drei Punkte werden aber mit einem Leerzeichen davor angehängt, das möchte ich nicht, ich will das die drei Punkte direkt im gekürzten Text am letzten Wort hängen, deshalb gibt es noch die zwei weiteren Zeilen 12 und 13.
$string_ende = strrchr($text, " ");
Die Funktion strrchr()
bekommt zwei Parameter, den Text und als zweiten ein Zeichen, in diesem Fall ein Leerzeichen.
Das bedeutet im Text wird ein Leerzeichen gesucht das als letztes auftaucht, in diesem Fall taucht das letzte Leerzeichen vor den eingefügten drei Punkten auf.
$text = str_replace($string_ende, "...", $text);
Die Funktion str_replace()
ersetzt alle Vorkommen von in diesem Fall $string_ende
in $text
und ersetzt es mit "..."
, so ist das Leerzeichen auch weg.
Rückgabewert
Mit return $text; wird nun der umgewandelte Text zurückgegeben und kann zum Beispiel mit echo ausgegeben werden.
Beispiel
In diesem Beispiel wird eine Ausgabe gezeigt.
$text = "Das ist ein langer Text."; $sText = textShortener($text, 11); echo $sText;
echo $sText
würde folgendes ausgeben:
Das ist ein…