public function limit_characters($str, $n = 500, $end_char = '…')
{
if (strlen($str) < $n) {
return $str;
}
$str = preg_replace('/\\s+/', ' ', str_replace(array("\r\n", "\r", "\n"), ' ', $str));
if (strlen($str) <= $n) {
return $str;
}
$out = '';
foreach (explode(' ', trim($str)) as $val) {
$out .= $val . ' ';
if (strlen($out) >= $n) {
return rtrim($out) . $end_char;
}
}
}