Вы должны быть осторожны с двойными переносами строк, которые могут привести к двойным пробелам.Используйте это действительно эффективное регулярное выражение:
$string = trim(preg_replace('/\s\s+/', ' ', $string));
Несколько пробелов и символов новой строки заменяются одним пробелом.
Редактировать: Как отмечали другие, это решение имеетвыдает совпадения между строками между словами.Этого нет в примере, но можно легко увидеть, как эта ситуация может возникнуть.Альтернатива заключается в следующем:
$string = trim(preg_replace('/\s+/', ' ', $string));