Вы можете попробовать что-то вроде этого, но это может сократить последнее слово
substr($trimedHTML, 0, 512) . '...'
Если вы не хотите, чтобы последнее слово сокращалось, вы можете сделать что-то подобное, но не всегда будете давать точно 512 символов, потому что следующее слово может быть большим ...
$text=$trimedHTML;
if (preg_match('/^.{1,512}\b/s', $trimedHTML, $match))
{
$text=$match[0] . ( strlen($match[0]) < strlen($trimedHTML) ? "..." : "" );
}
И используйте переменную $ text, вместо str_limit($trimedHTML, 509, '...')
Этот код буквально совпадает с кодом в этом ответе:
Убедиться, что PHP substr заканчивается на слове, а не на символе
Хотя это можно считать «другим вопросом», так что ...