| Yaslaw.Info > PHP > [PHP] wordcut |
Impressum ∞ |
[PHP] wordcut
Diese Funktion schneidet im Gegensatz zu wordwrap() nax X Zeichen ab und versucht dabei die Wörter im Satz nicht zu zerstückeln.
Funktion wordCut()
wordCut.php
<?php
/**
* mpl by ERB software
* @author stefan.erb(at)erb-software.com
*/
/**
* Schneidet einen Text nach Anzahl Zeichen ab und erweitert mit einem anderen String
* @example
* $text = "Fischer Fritz fischt frische Fische, frische Fische fischt Fischers Fritz";
* echo wordCut($text, 30, ' ...');
* Ausgabe: Fischer Fritz fischt frische ...
*
* @param String $text Der zu kürzende Text
* @param Number $maxlen Maximale Länge des textes
* @param optional String $suffix Text der am Ende angehängt wird
* @return String
*/
function wordCut($text, $maxlen = 30, $suffix = ''){
define('C_DELIMITER', '#wordCut#');
// Falls der Text selber schon genug kurz ist, diesen unverändert zurückgeben
if(strlen($text)<$maxlen) return $text;
// Mittels wordwrap den String unterteilen und danach den ersten Teil davon extrahieren
$trunc = array_shift(explode(C_DELIMITER, wordwrap($text, $maxlen, C_DELIMITER, true)));
return trim("{$trunc} {$suffix})";
}
?>
/**
* mpl by ERB software
* @author stefan.erb(at)erb-software.com
*/
/**
* Schneidet einen Text nach Anzahl Zeichen ab und erweitert mit einem anderen String
* @example
* $text = "Fischer Fritz fischt frische Fische, frische Fische fischt Fischers Fritz";
* echo wordCut($text, 30, ' ...');
* Ausgabe: Fischer Fritz fischt frische ...
*
* @param String $text Der zu kürzende Text
* @param Number $maxlen Maximale Länge des textes
* @param optional String $suffix Text der am Ende angehängt wird
* @return String
*/
function wordCut($text, $maxlen = 30, $suffix = ''){
define('C_DELIMITER', '#wordCut#');
// Falls der Text selber schon genug kurz ist, diesen unverändert zurückgeben
if(strlen($text)<$maxlen) return $text;
// Mittels wordwrap den String unterteilen und danach den ersten Teil davon extrahieren
$trunc = array_shift(explode(C_DELIMITER, wordwrap($text, $maxlen, C_DELIMITER, true)));
return trim("{$trunc} {$suffix})";
}
?>
Anwendungsbeispiel: Weiterlesen-Link
Ein typisches Beispiel. Wir haben in der DB mehrere Texte. In einer Übersicht wollen wir nur den Textanfang und ein Weiterführungslink anzeigen.//Testdaten. Werden normalerweise aus einer DB geladen
$id = 15;
$text = 'Bei der Explosion einer Bombe in Teheran ist iranischen Medienberichten zufolge Mostafa Ahmadi Roshan – ein im Atombereich tätiger Universitätsprofessor – getötet worden. Zwei weitere Mitfahrer wurden bei dem Anschlag verletzt. ';
//Pattern für den Weiterführenlink
define('C_LINK_PATTERN', "<a href='{$_SERVER['SCRIPT_NAME']}?id=%d'><i>[MEHR...]</i></a>");
//Gekürtzten Text mit Weiterführenlink
echo wordCut($text, 50, sprintf(C_LINK_PATTERN, $id));
$id = 15;
$text = 'Bei der Explosion einer Bombe in Teheran ist iranischen Medienberichten zufolge Mostafa Ahmadi Roshan – ein im Atombereich tätiger Universitätsprofessor – getötet worden. Zwei weitere Mitfahrer wurden bei dem Anschlag verletzt. ';
//Pattern für den Weiterführenlink
define('C_LINK_PATTERN', "<a href='{$_SERVER['SCRIPT_NAME']}?id=%d'><i>[MEHR...]</i></a>");
//Gekürtzten Text mit Weiterführenlink
echo wordCut($text, 50, sprintf(C_LINK_PATTERN, $id));
Ausgabe:
Kategories: [PHP] | [Functions]
