<?php
$re = '/# Split sentences on whitespace between them.
(?<= # Begin positive lookbehind.
[.!?] # Either an end of sentence punct,
| [.!?][\'"] # or end of sentence punct and quote.
) # End positive lookbehind.
(?<! # Begin negative lookbehind.
Mr\. # Skip either "Mr."
| Mrs\. # or "Mrs.",
| Ms\. # or "Ms.",
| Jr\. # or "Jr.",
| Dr\. # or "Dr.",
| Prof\. # or "Prof.",
| Sr\. # or "Sr.",
| T\.V\.A\. # or "T.V.A.",
# or... (you get the idea).
) # End negative lookbehind.
(?:\h+|^$) # Split on whitespace between sentences\/empty lines.
/mix' ;
$text = <<<EOL
This is paragraph one. This is sentence one. Sentence two!
This is paragraph two. This is sentence three. Sentence four!
EOL ;
echo "\n Before: \n " . $text . "\n " ;
$sentences [ 1 ] = " " ; // remove 'sentence one'
// put text back together
echo "\n After: \n " . $text . "\n " ;
PD9waHAKCiRyZSA9ICcvIyBTcGxpdCBzZW50ZW5jZXMgb24gd2hpdGVzcGFjZSBiZXR3ZWVuIHRoZW0uCiAgICAoPzw9ICAgICAgICAgICAgICAgICMgQmVnaW4gcG9zaXRpdmUgbG9va2JlaGluZC4KICAgICAgWy4hP10gICAgICAgICAgICAgIyBFaXRoZXIgYW4gZW5kIG9mIHNlbnRlbmNlIHB1bmN0LAogICAgfCBbLiE/XVtcJyJdICAgICAgICAjIG9yIGVuZCBvZiBzZW50ZW5jZSBwdW5jdCBhbmQgcXVvdGUuCiAgICApICAgICAgICAgICAgICAgICAgICMgRW5kIHBvc2l0aXZlIGxvb2tiZWhpbmQuCiAgICAoPzwhICAgICAgICAgICAgICAgICMgQmVnaW4gbmVnYXRpdmUgbG9va2JlaGluZC4KICAgICAgTXJcLiAgICAgICAgICAgICAgIyBTa2lwIGVpdGhlciAiTXIuIgogICAgfCBNcnNcLiAgICAgICAgICAgICAjIG9yICJNcnMuIiwKICAgIHwgTXNcLiAgICAgICAgICAgICAgIyBvciAiTXMuIiwKICAgIHwgSnJcLiAgICAgICAgICAgICAgIyBvciAiSnIuIiwKICAgIHwgRHJcLiAgICAgICAgICAgICAgIyBvciAiRHIuIiwKICAgIHwgUHJvZlwuICAgICAgICAgICAgIyBvciAiUHJvZi4iLAogICAgfCBTclwuICAgICAgICAgICAgICAjIG9yICJTci4iLAogICAgfCBUXC5WXC5BXC4gICAgICAgICAjIG9yICJULlYuQS4iLAogICAgICAgICAgICAgICAgICAgICAgICAjIG9yLi4uICh5b3UgZ2V0IHRoZSBpZGVhKS4KICAgICkgICAgICAgICAgICAgICAgICAgIyBFbmQgbmVnYXRpdmUgbG9va2JlaGluZC4KICAgICg/OlxoK3xeJCkgICAgICAgICAgIyBTcGxpdCBvbiB3aGl0ZXNwYWNlIGJldHdlZW4gc2VudGVuY2VzXC9lbXB0eSBsaW5lcy4KICAgIC9taXgnOwoKJHRleHQgPSA8PDxFT0wKVGhpcyBpcyBwYXJhZ3JhcGggb25lLiBUaGlzIGlzIHNlbnRlbmNlIG9uZS4gU2VudGVuY2UgdHdvIQoKVGhpcyBpcyBwYXJhZ3JhcGggdHdvLiBUaGlzIGlzIHNlbnRlbmNlIHRocmVlLiBTZW50ZW5jZSBmb3VyIQpFT0w7CgplY2hvICJcbkJlZm9yZTogXG4iIC4gJHRleHQgLiAiXG4iOwoKJHNlbnRlbmNlcyA9IHByZWdfc3BsaXQoJHJlLCAkdGV4dCwgLTEpOwoKJHNlbnRlbmNlc1sxXSA9ICIgIjsgLy8gcmVtb3ZlICdzZW50ZW5jZSBvbmUnCgovLyBwdXQgdGV4dCBiYWNrIHRvZ2V0aGVyCiR0ZXh0ID0gaW1wbG9kZSggJHNlbnRlbmNlcyApOwoKZWNobyAiXG5BZnRlcjogXG4iIC4gJHRleHQgLiAiXG4iOw==