Consider the following string:
I have been driving to {Palm.!.Beach:100} and it . was . great!!
I use the following regex to delete all pun
$str = preg_replace('(\{[^}]+\}(*SKIP)(*FAIL)|[^a-zA-Z ]+)', '', $str);
See also Split string by delimiter, but not if it is escaped.