Не работает регулярное выражение вычистки строки от коротких слов

Nicki

Новичок
Не работает регулярное выражение вычистки строки от коротких слов

Что то не пойму почему не работает регулярка. Мне нужно убрать все слова короче 3 символов заменив их пробелом.

$str = " a aa a aaa a a a aaaa a aaaaa a ";
$str = preg_replace("/\s+\S{1,3}\s+/", ' ', $str);

Выводит " aa aaa a aaaa aaaaa ", т.е. убирает не все слова, а только часть. В чем моя ошибка, подскажите пожалуйста?

Пробовал так же и следующие варианты:

preg_replace("/\s+[\S]{1,3}\s+/", ' ', $str);
preg_replace("/\s+([\S]{1,3})\s+/", ' ', $str);

результат один и тот же.
 
Сверху