String kürzen mit PHP

Veröffentlicht am 18 Juli 2011 um 20:44

Wer kennt es nicht?

Ein String soll als Teaser-Text oder Anrisstext o.Ä. einen gekürzten Inhalt eines längeren Textes darstellen. Allerdings ist die häufig verwendete Methode, einfach nach 150 Zeichen abzuschneiden und ein […] mehr lesen hinten dran zu hängen zwar dienlich, aber nicht so hübsch, da hiermit oft mitten im Wort eingeschnitten wird. Besonders lästig ist das, wenn es in einem maskierten Umlaut passiert, á la:

…“und so hörten wir, wie sich besonders h&au[…] mehr lesen

Dem wird mit nachfolgendem PHP Skript Abhilfe geschaffen:

<?php
// $length ist die maximal erlaubte Anzahl an Zeichen
$length = 100;
$string = ‚Einige Verleger werden sich wohl nun Gedanken dar&uuml;ber machen, warum sie weniger Besucher auf den Webseiten ihrer Zeitungen haben. Nach einem langen Rechtsstreit, hat Google nun einige Zeitungen aus dem Index von Google News aber auch der normalen Google Suche genommen und zeigt keine Ergebnisse mehr an, wenn man nach einer der Zeitungen sucht.‘;
// $shorty ist der gekuerzte String, sofern die Stringlaenge ueber $length Zeichen betraegt
$shorty = (strlen($string) > $length)
?
substr($string,0,strrpos(substr($string,0,$length+1),‘ ‚))
:
$string;
var_dump($shorty);
?>

Das ist auch schon alles. Besonders einfach wird es, wenn ihr es in eine Funktion schachtelt und z.B. $length auch noch als Parameter übergebt. So kann das Skript einmal in eine Funktionsdefinition eingebunden werden und muss nicht für jeden Einsatzzweck neu kopiert werden – einfach mit neuem Parameter aufrufen, falls der Text mal 50 und mal 200 Zeichen lang sein soll – und fertig :)

Hier die Demonstration als Funktion:

<?php
// Die Funktion nur einmalig definieren, z.B. in einer eigenen Datei funktionen.php
function shorten_me($string, $length) {
// $shorty ist der gekuerzte String, sofern die Stringlaenge ueber $length Zeichen betraegt
$shorty = (strlen($string) > $length)
?
substr($string,0,strrpos(substr($string,0,$length+1),‘ ‚))
:
$string;
return $shorty;
}
// $length ist die maximal erlaubte Anzahl an Zeichen
$length1 = 50;
$string1 = ‚Jetzt brauchen wir einen k&uuml;rzeren Text, weil an dieser Stelle nur 50 Zeichen erlaubt sind. Sch&ouml;n, dass ich die Funktion mittels Parametern steuern kann!‘;
echo    shorten_me($string1, $length1);

echo    ‚<br /><br />‘;
$length2 = 200;
$string2 = ‚Dieser Text ist zwar etwa genauso lang wie der Text oben, aber von diesem Text erlauben wir 200 Zeichen. Daher gibt es einen Parameter mit einem h&ouml;heren Limit.‘;
echo    shorten_me($string2, $length2);
?>

 

 

Kategorisiert in: , , ,