Naja man kann es schon mit einer bestimmten Länge machen, aber z.B. Bilder können können ganz leicht dafür sorgen, dass es nicht funktioniert, außerdem können BBCodes getrennt werden. Wenigstens dann solltest du manuell trennen.
Ersetze
if ( strpos ( $row['text'] , '[PREVIEWENDE]' ) !== FALSE ) {
$a = explode('[PREVIEWENDE]' , $row['text']);
$row['text'] = $a[0];
$row['readwholenews'] = '» <a href="index.php?news-'.$row['id'].'">'.$lang['readwholenews'].'</a> «';
} else {
$row['readwholenews'] = '';
}
durch
$newsIsSplit = false;
$maxPreviewLength = 450;
if ( strpos ( $row['text'] , '[PREVIEWENDE]' ) !== FALSE ) {
$a = explode('[PREVIEWENDE]' , $row['text']);
$row['text'] = $a[0];
$newsIsSplit = true;
} elseif (strlen($row['text']) > $maxPreviewLength) {
$lastSpace = strrpos(substr($row['text'], 0, $maxPreviewLength), ' ');
$row['text'] = substr($row['text'], 0, $lastSpace) . '...'; //ggf. ... entfernen wenn nicht gewünscht
$newsIsSplit = true;
}
if ($newsIsSplit) {
$row['readwholenews'] = '» <a href="index.php?news-'.$row['id'].'">'.$lang['readwholenews'].'</a> «';
} else {
$row['readwholenews'] = '';
}