//The simple version for 10 Characters from the beginning of the string
$string = substr($string,0,10).'...';
Обновление:
Основано на предложении проверить длину (а также обеспечить одинаковую длину на обрезанных и необрезанных строках):
$string = (strlen($string) > 13) ? substr($string,0,10).'...' : $string;
Таким образом, вы получите строку максимум13 символов;либо 13 (или меньше) обычных символов, либо 10 символов, за которыми следует «...»
Обновление 2:
Или как функция:
function truncate($string, $length, $dots = "...") {
return (strlen($string) > $length) ? substr($string, 0, $length - strlen($dots)) . $dots : $string;
}
Обновление 3:
Прошло много времени с тех пор, как я написал этот ответ, и я больше не использую этот код.Я предпочитаю эту функцию, которая предотвращает разрыв строки в середине слова с помощью функции wordwrap
:
function truncate($string,$length=100,$append="…") {
$string = trim($string);
if(strlen($string) > $length) {
$string = wordwrap($string, $length);
$string = explode("\n", $string, 2);
$string = $string[0] . $append;
}
return $string;
}