Wer Strings kürzen möchte die html Codiert sind (alle Sonderzeichen ersetzt durch die Entsprechende HTML Codes. z.B. ö = ö oder & = &) wird schnell feststellen das es zu unschönen Effekten kommt.
Der String “CD & DVD & Video” wird sehr kurz da er im HTML als “CD & DVD & Video” dargestellt wird. Somit sind die String extrem ungleich lang. Wer zusätzlich auch noch nach einer festen Länge abschneiden muss und nicht darauf achten kann das nur nach ganze Wörter gekürzt wird hat mit Ergebnissen wie “CD & DVD $am” zu rechnen.
Die Lösung ist so einfach wie einleuchtend. Der zu kürzende String wird zuvor wieder in die angezeigte Form gewandelt, gekürzt und anschließend um valides HTML zu behalten zurück in die HTML Form gebracht.
{$String|html_entity_decode:2:”UTF-8″|truncate:17:”…”:true|htmlentities:2:”UTF-8″}
… jup gibt eigentlich nix weiter zu sagen. Simple und doch hat es eine Weile gedauert bis man drauf gekommen ist. Viel Spaß damit.