Вы можете использовать регулярное выражение:
$str = trim(preg_replace('@(^|\pZ)\pL\pM*(?=\pZ|$)@u', ' ', $str));
Это удалит одну единственную букву . Если вы хотите удалить любой период символов, вы можете сделать:
$str = trim(preg_replace('@(^|\pZ)P\Z(?=\pZ|$)@u', ' ', $str));
Демонстрация: http://codepad.viper -7.com / YaLUQD