Um einen Text an einer bestimmten Position abzuschneiden, um einen overflow zu vermeiden, kann man die folgende Funktion verwenden:
1 |
<br />/**<br /> * Schneidet einen String bei der Länge $l ab und ergänzt ihn um einen<br /> * Endstring $end (...)<br /> * @param string $string<br /> * @param int $l<br /> * @param string $end<br /> * @return string<br /> */<br />function cutAt($string, $l, $end = "...") {<br /> if(strlen($string) > $l) {<br /> $string = substr($string, 0, $l);<br /> return $string . $end;<br /> }<br /> return $string;<br />}<br /> |
Die Funktion nimmt den zu verändernden String entgegen, schneidet den String ab der Zeichenposition ab und setzt 3 Punkte dahinter (wenn nicht anders definiert).
Leider werden Worte jedoch mittendrin abgeschnitten und das Resultat ist eher unschön. Im Folgenden eine Funktion, die ab der Maximalzeichenzahl noch das Wort übernimmt und den Rest abschneidet:
1 |
<br />/**<br /> * Schneidet einen String bei der Länge $l ab und ergänzt ihn um einen<br /> * Endstring $end (...): Dabei werden nur ganze Worte abgeschnitten und<br /> * solche, die über die maximale Zeichenanzahl hinausgehen, abgeschnitten:<br /> * @param string $string<br /> * @param int $l<br /> * @param string $end<br /> * @return string<br /> */<br />function cutAtWord($string, $l, $end = "...") {<br /> $string = explode(" ", $string);<br /> foreach($string as $s) {<br /> $tl += strlen($s);<br /> if($tl <= $l)<br /> $return .= " " . $s;<br /> else<br /> return $return . $end;<br /> }<br /> return $return;<br />}<br /> |
Schreibe einen Kommentar