PHP заменить много пробелов одним + HTML сущности

Идея состоит в использовании регулярного выражения:

'| +|'

и фунции preg_replace() :

// заменям несколько проблем одним
$text = preg_replace('| +|', ' ', $text);

Замена множественных пробелов в смеси с HTML

делается так (только удалите пробелы между символами & n):


/**
 * Заменяет множественный пробел на один
 * 
 * (замена нескольких пробелов одним) 
 * -  с учетом специфики замены пробелов на HTML сущности
 * 
 * @param  String $str  исходная строка
 * @return String       строка после замены
 */
function multipleSpacesToOne($str) 
{
	$str =  preg_replace('/(& nbsp;){2,}/', '& nbsp;', $str); // более 2 html сущностей
	$str =  preg_replace('/( & nbsp;)/', ' ', $str); // пробел и сущность
	$str =  preg_replace('/(& nbsp; )/', ' ', $str); // сущность и пробел
	$str =  preg_replace('/ {2,}/', ' ', $str); // просто двойной пробел
	return $str;
}

На основе: http://www.shtogrin.com/library/web/pcre...