Как заменить все пробелы, которые на самом деле не являются пробелами, в регулярном выражении стека

У меня есть следующая строка, которую я хочу «очистить» от нескольких пробелов:

$string = "This is   a test string"; //Using utf8_decode

Не имеет большого значения, верно? Однако строка не очищается после использования:

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

Потому что строка на самом деле выглядит так:

$test = "This is a  test string";

Итак, как я могу исправить эту проблему?

Благодарю.

Пожалуйста, я не хочу заменять символ str_replace('Â', '') или что-то

1

Решение

Вы можете использовать /u Модификатор UNICODE:

$string = preg_replace('/\s+/u', ' ', $string);

/u модификатор позволяет механизму PCRE обрабатывать строки как строки UTF8 (путем включения PCRE_UTF8 глагол) и сделать классы сокращенных символов в шаблоне Unicode осведомленными (путем включения PCRE_UCP глагол)

Главное, что \s теперь будет соответствовать всем пробелам Юникода, а входная строка обрабатывается как строка Юникода.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]