Как заменить все пробелы, которые на самом деле не являются пробелами, с регулярным выражением в PHP
У меня есть следующая строка, которую я хочу "очистить" от нескольких пробелов:
$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
теперь будет соответствовать всем пробелам Юникода, а входная строка обрабатывается как строка Юникода.