Я знаю, что существует много типов пространства (длинный пробел, короткий пробел, тонкое пространство, неразрывное пространство, и т.д.), но, все они, которые я отослал, имеют объекты HTML (по крайней мере, htmlentities PHP () возвращают что-то как  .
Но, что относительно тех пробелов, которые не имеют никаких объектов HTML?
Пример: [URL в качестве примера, не допустимый больше]
Посмотрите на псевдоним этой учетной записи. Это имеет многих "" (пробелы) в передней стороне, которые видимы для нас (этого не происходит с ).
Я уже попробовал фильтр регулярными выражениями, с помощью \x Escape, фильтр с str_replace (), с пространством как аргумент и никакая удача вообще!
У Вас есть какое-либо предложение о том, как отфильтровать ВСЕ типы пробела?
\ s
по умолчанию, не будет соответствовать пробельным символам со значениями больше 128. Чтобы получить их, вы можете вместо этого эффективно использовать другие UTF- 8-знающие последовательности.
(Стандартный отказ от ответственности: я просматриваю исходный код PCRE, чтобы составить списки ниже, я могу пропустить символ или ввести что-то неправильно. Пожалуйста, простите меня.)
\ p {Zs}
соответствует:
\ h
(Горизонтальный пробел) совпадает с тем же, что и \ p {Zs}
выше, плюс
Аналогичным образом существует несколько вариантов сопоставления вертикальных пробелов.
\ p {Zl}
соответствует разделителю строк U + 2028.
\ p {Zp}
соответствует U + 2029 Разделитель абзацев.
\ v
(вертикальный пробел) соответствует \ p {Zl}
, \ p {Zp}
и следующему
Возврат к началу в режиме UTF-8 (т.е.с использованием модификатора шаблона u
) \ s
будет соответствовать любому символу, который соответствует \ p {Z}
(то есть любому, что \ p {Zs}
, \ p {Zl}
и \ p {Zp}
будут соответствовать), плюс
Короче говоря (держу пари, вы читали все вышеперечисленное, не так ли?), Вы можете использовать \ s
но убедитесь, что вы находитесь в режиме UTF-8, например / \ s / u
. Для практического использования, чтобы отфильтровать совпадающие пробельные символы из строки, вы должны сделать что-то вроде
$new_string = preg_replace('/\s/u', '', $old_string);
Наконец, если вы действительно заботитесь о вертикальных пробелах, которые не включены в \ s
] (LF и NEL), то вы можете использовать класс символов [\ s \ v]
для соответствия всем 26 пробельным символам, перечисленным выше.
Все они представляют собой простые пробелы (возвращающий код символа 32), которые можно перехватить с помощью регулярных выражений или trim ()
.
Попробуйте следующее:
preg_replace("/\s{2,}/", " ", $text);
$result = preg_replace('/\s/', '', $yourString)
См. http://www.php.net/manual/en/regexp.reference.backslash.php для получения дополнительной информации о \ s