Podria hacerse con strpos(".") combinado con substr(0, $strposValue) .
Pero me parece mejor esta solución, donde el extracto debe comenzar con una letra mayúscula y terminar con el punto + cualquier cantidad de espacios en blancos incluyendo: retorno de carros y demás + seguido de otro letra mayúscula.
Código :
<?php
$Texto = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque eu quam. Aliquam pellentesque metus id nisl. Donec vehicula nibh sed justo. Suspendisse hendrerit accumsan neque. Sed non mi. Aenean accumsan nisl nec nulla dictum mattis. Nam pede velit, porttitor in, rutrum non, pellentesque sit amet, lectus. Duis ultricies massa quis ipsum. Suspendisse tincidunt, metus non convallis nonummy, felis sapien sodales nibh, lacinia mollis mauris ipsum ut dolor. Ut commodo tincidunt sapien. Pellentesque ultrices. Nullam lorem justo, dictum sit amet, dictum et, scelerisque sed, felis. Maecenas velit ante, faucibus lobortis, mollis ut, euismod eget, diam. Nam non odio cursus nisi ultricies imperdiet. Donec mollis iaculis nisi.";
$Texto2 = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, pellentesque eu quam... Aliquam pellentesque metus id nisl. Donec vehicula nibh sed justo. Suspendisse hendrerit accumsan neque. Sed non mi. Aenean accumsan nisl nec nulla dictum mattis. Nam pede velit, porttitor in, rutrum non, pellentesque sit amet, lectus. Duis ultricies massa quis ipsum. Suspendisse tincidunt, metus non convallis nonummy, felis sapien sodales nibh, lacinia mollis mauris ipsum ut dolor. Ut commodo tincidunt sapien. Pellentesque ultrices. Nullam lorem justo, dictum sit amet, dictum et, scelerisque sed, felis. Maecenas velit ante, faucibus lobortis, mollis ut, euismod eget, diam. Nam non odio cursus nisi ultricies imperdiet. Donec mollis iaculis nisi.";
function summary ( $text ){
$summary = array();
preg_match( "/[A-Z](.+?)\.(?=\s+[A-Z])/",$text, $summary);
return $summary[0];
}
echo summary($Texto);
echo "<hr />";
echo summary($Texto2);
?>
saludos