Prova con
codice:
$str=preg_replace("/(\.|\?|\!)(\w)/i", "\\1 \\2", $str);