Если ваши предложения разделены точками, вы можете попробовать
$shortened = implode('.', array_slice(explode('.', $thewhat), 0, 2)) . '.';
Так как это будет работать только для предложений, разделенных точками, и предложений без точек в предложении, вот регулярное выражение, которое может помочь вам с большинством частей:
$pattern = '/(\S.+?[.!?])(?:\s+|$)/';
$matches = preg_split($pattern, $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$shortened = $matches[0] .' '. $matches[1];
Регулярное выражение украдено из: Что такое регулярное выражение для разбора отдельных предложений? , но слегка изменено, чтобы не включать соответствующие пробельные символы после каждого предложения.