User Tools

Site Tools


php:functions:wordcut

[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 = ''){ 
	if(!defined('C_DELIMITER')) 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
	$trunc = explode(C_DELIMITER, wordwrap($text, $maxlen, C_DELIMITER, true));
	//danach den ersten Teil davon extrahieren
	$trunc = array_shift($trunc);
	return trim("{$trunc} {$suffix}");
}
?>

Ein typisches Beispiel. Wir haben in der DB mehrere Texte. In einer Übersicht wollen wir nur den Textanfang und ein Weiterführungslink anzeigen.

Code

//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));

Ausgabe

Bei der Explosion einer Bombe in Teheran ist [MEHR...]

Bei der Explosion einer Bombe in Teheran ist <a href='/test/test2.php?id=15'><i>[MEHR...]</i></a>
php/functions/wordcut.txt · Last modified: 09.12.2013 09:39:54 (external edit)