Php Замена нескольких пространств одним пространством

Я пытаюсь заменить несколько пробелов на одно пространство. Когда я использую ereg_replace, я получаю сообщение об ошибке, поскольку он устарел.

ereg_replace("[ \t\n\r]+", " ", $string);

Есть ли для него идентичная замена. Мне нужно заменить несколько пробелов " " и несколько пробелов nbsp на одно пробел.

Ответ 1

Используйте preg_replace() и вместо [ \t\n\r] используйте \s:

$output = preg_replace('!\s+!', ' ', $input);

Из Справочник по базовому синтаксису регулярного выражения:

\ d,\w и \s

Сокращенные классы символов цифры, символы слов (буквы, цифры и символы подчеркивания), и пробелы (пробелы, вкладки и строка брейки). Может использоваться внутри и вне классов символов.

Ответ 2

preg_replace("/[[:blank:]]+/"," ",$input)

Ответ 3

$output = preg_replace('/\s+/', ' ',$input);

\ s является сокращением для [ \t\n\r]. Несколько пробелов будут заменены на одно пространство.