Solution:1
You could use regex:
$str = trim(preg_replace('@(^|\pZ)\pL\pM*(?=\pZ|$)@u', ' ', $str));
This would remove any single letter. If you want to remove any character period, you could do:
$str = trim(preg_replace('@(^|\pZ)P\Z(?=\pZ|$)@u', ' ', $str));