Это регулярное выражение обрезает последнее слово в строке, даже если strlen находится в допустимом диапазоне

$theExcerpt = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis'

$theExcerptAppend = (strlen($theExcerpt) > 156) ? '...' : '';
$theExcerpt = preg_replace('/\s+?(\S+)?$/', '', substr($theExcerpt, 0, 156));
$theExcerpt .= $theExcerptAppend;

Пока длина входящей фразы превышает 156 символов, скрипт работает нормально. Тем не менее, когда длина меньше 156 (как это здесь в 154), последнее слово в отбрасываемом, даже если строка, включая слово, все еще меньше 156.

ЗаписьЯ не хочу, чтобы строка заканчивалась в середине слова, но если включение слова не превышает значение strlen, равное 156, его следует включить.

Ответы на вопрос(1)

Ваш ответ на вопрос