Weiters: was bisher noch nicht gesagt wurde:
Wenn dein Text z.B. noch Markup (also z.B. HTML) enthält, kann es sein, dass du hier fehler produzierst.
Willst du also 255 Zeichen oder willst du 255 Zeichen + ggf. anfallendes Markup
Beispiel: 9 Zeichen aus folgendem:
<span>foo</span> bar baz qux
<span>foo (9 Zeichen, mit zerstörtem Markup)
<span>foo</span> (9 Zeichen + Vervollständigung des Markups)
foo bar b (9 Zeichen ohne Markup)
<span>foo</span> bar b (9 Zeichen ohne Markup, aber Markup beibehalten
Daneben gibts noch einige weitere Möglichkeiten - z.B maximal 255 Zeichen aber nur ganze Wörter oder 255 Zeichen abzüglich Whitespace usw. das muss erstmal definiert werden.
substr() oder mb_substr() sind jedenfalls Gnadenlos nur n Zeichen und beachten den Rest nicht.