Wie kann ich mit PHP einen String nach 25 Worten kürzen?

Icon frag Sir Apfelot

Icon frag Sir ApfelotIch bin auf der Suche nach einer Möglichkeit, einen Text-String nach einer bestimmten Anzahl an Worten zu kürzen. Es gibt zwar in PHP einen Befehl, mit dem man einen String auf X Zeichen kürzen kann, aber das ist meistens mitten im Wort und das gefällt mir nicht. Wie kann man das mit einer Anzahl an Worten lösen?

Antwort: Um das zu realisieren muss man eine eigene Funktion bauen. PHP selbst verfügt nicht über eine Funktion, die so ein wortbasiertes Kürzen erlaubt. Im Grunde zerschneidet man den Text mit explode und nimmt das Leerzeichen als Trenner. Dann hat meinen ein Array, das die einzelnen Worte enthält. Um den String dann auf 25 Worte zu begrenzen, baut man den Text nach und nach mit einer Schleife zusammen und läßt diese einfach nur 25 mal laufen. Das fertige PHP Skript sieht dann so aus:

$meintext = "Das ist mein toller Text, den ich kürzen möchte. Aktuell ist er noch relativ lang und enthält viele Worte. Aber nachdem das PHP-Skript mit ihm fertig ist, wird er schon recht kurz sein. Ungefähr genauso lang, wie man möchte. Probiere es einfach mal aus!";
$kurzertext = '';
$anzahlworte = 25;

$schnippsel = explode(' ', $meintext);
for ($x = 0; $x < $anzahlworte; $x++) {
$kurzertext .= "{$schnippsel[$x]} ";
}

$kurzertext .= "..."; // Noch Pünktchen anhängen
echo $kurzertext; // Fertig...

 

Warum Worte und keine Zeichen?

Das Trennen eines Textes nach einer bestimmten Anzahl von Worten ist deutlich eleganter als das Kürzen nach einer beliebigen Anzahl von Zeichen. Das macht das Ende des Auszugs deutlich lesbarer und sieht dazu besser aus. In der Mitte abgeschnittene Worte wirken immer wie Fehler im Text, finde ich.

PHP-Beispiel: Kürzen des Strings nach X Zeichen

Möchte man jedoch aus irgendwelchen Gründen nach einer bestimmten Anzahl von Zeichen statt Worten kürzen, ist dies deutlich leichter als das oben aufgeführte Beispiel. Hier benötigt man nur drei Zeilen Code:

$meintext = "Das ist mein toller Text, den ich kürzen möchte. Aktuell ist er noch relativ lang und enthält viele Worte. Aber nachdem das PHP-Skript mit ihm fertig ist, wird er schon recht kurz sein. Ungefähr genauso lang, wie man möchte. Probiere es einfach mal aus!";
$meintext=strip_tags ($meintext); // erstmal HTML-Tags rausfiltern, die sonst beim kürzen kaputt gehen würden
if(strlen($meintext)>100) echo substr($meintext,0,100)."..."; // nach 100 Zeichen wird gekürzt 
else echo $meintext;  

2 Kommentare

  1. Siegbert sagt:

    Die Darstellung des Code-Blocks ist etwas eigenwillig und verschwindet auf der rechten Browserseite irgendwo im Nirvana.

    • Sir Apfelot sagt:

      Hallo Siegbert! Danke für den Hinweis. Das ist irgendwie im Laufe der Jahre kaputt gegangen, da ich früher ein anderes Plugin zu Darstellung der Codes hatte. Ich habe es jetzt aber korrigiert und hoffe, es ist wieder lesbar!

Schreibe einen Kommentar

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