$re = '/(?:\w+[,.?!]?\s+){15}(?:\w+,?\s+)*?\w+[.?!]/';
$str = 'Donec consectetur arcu ut sem ornare ornare. Curabitur rhoncus elit nec magna vehicula, eu commodo arcu porta. Etiam egestas sodales nibh. Morbi eu varius eros, sed lacinia ligula. Etiam nec fringilla magna. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc dictum tempor maximus. Suspendisse in mi at urna semper volutpat. Duis semper blandit dui id feugiat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus quis felis ultricies, malesuada augue eu, elementum nibh. Vestibulum vestibulum aliquet fringilla. Integer et libero pulvinar, fringilla dolor facilisis, faucibus mauris. In mi turpis, molestie ac porttitor nec, sollicitudin euismod nibh. Praesent efficitur libero eget leo eleifend interdum. Curabitur in ipsum a neque ullamcorper facilisis. Nulla fermentum ut ante malesuada porttitor.Vestibulum dapibus eget lectus a dignissim. Cras tincidunt dolor a velit dapibus, sed consectetur arcu consectetur. Vestibulum a magna sed tellus finibus placerat. Etiam at justo dolor. Sed a efficitur lectus. Donec venenatis volutpat tellus in imperdiet. Sed auctor interdum ultrices. Phasellus non pulvinar nulla. Duis interdum libero augue, nec ultrices turpis malesuada eget. Etiam quis libero dapibus, faucibus sapien a, porta odio. Donec placerat dolor a quam iaculis, quis posuere eros scelerisque. Aliquam fermentum diam libero, ut pellentesque quam mollis et.Suspendisse maximus, sapien non porta commodo, nulla diam porta nibh, ut porttitor dui nisl eu risus. Proin ac ante faucibus, posuere velit a, malesuada lectus. Suspendisse id hendrerit leo. Sed vel vestibulum orci, in convallis libero. Aliquam semper nulla maximus molestie venenatis. Donec et augue tristique erat mollis aliquam non vel elit. Pellentesque rhoncus, sem | at cursus ultricies, tellus dui viverra dui, non eleifend odio ex vitae neque. Sed vulputate, nibh tempor iaculis auctor, mauris nisl consectetur odio, vel venenatis nibh sapien non risus. Aenean eu pellentesque ante. Aliquam erat volutpat. Vivamus porta dui et erat faucibus, non semper lacus auctor. Etiam eget orci non quam rhoncus lobortis ut vel urna. Fusce dapibus urna ex, fermentum mollis erat consequat id. Cras mollis dolor sed ligula gravida dignissim.Mauris nec tristique neque. Nulla gravida elit in mi aliquam convallis quis et nulla. Curabitur quis ultrices diam. Integer quis rutrum velit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam iaculis neque a leo sodales, non suscipit risus dignissim. Proin imperdiet, lorem eu efficitur pellentesque, erat ipsum bibendum justo, id vulputate nibh lacus nec ligula. Fusce sed lectus ut est mattis consectetur. Donec non neque ac dui iaculis cursus pellentesque id magna.Pellentesque sed consequat lorem. Etiam vel vestibulum justo. Duis pretium enim non laoreet venenatis. Fusce vel metus vel augue accumsan fermentum. Nullam feugiat in diam in tristique. Nunc et fringilla enim. In vitae lobortis velit. Nam faucibus.';
preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php