Zum Inhalt springen

PHP Tutorial: Text kürzen Funktion

PHP Tutorial - Text kürzen Funktion

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.

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
  • $length: die Länge des gekürzten Textes

Vor $text steht noch string, das bedeutet das nur Text übergeben werden darf und vor $length 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 $length wird standardmäßig immer 50 genommen wenn man nichts anderes angibt.

Wenn man zum Beispiel 75 bei $length übergibt dann wird der Standardwert von 50 mit 75 überschrieben.



Banner


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 $length.

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 $length angegeben auf welche Länge gekürzt werden soll.

Bei $length 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…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

8 + 3 =