@Deletron247

Что делает эта регулярка?

Есть кусок кода: $string = preg_replace("/[^ \w]+/", "", $string);

Когда я в него передаю строку с английскими символами (Evgeniy Krege), то этот текст возвращается, но если я в него кидаю русский текст (Иван Ташимиров), то возвращается только пустота. И поэтому вопрос: что делает эта регулярка и почему русский текст "не выживает" после него?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 2
\w matches any word character (equal to [a-zA-Z0-9_])

https://regex101.com/r/HDoDzi/1

Т.е. выбираются все символы, которые не являются пробелом и не входят в список указанный выше и удаляются.

Если же указать модификатор юникода, логика меняется:
\w match any word character in any script (equal to [\p{L}\p{N}_])
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
https://regex101.com/
Справа снизу почитай справку.
\w - все буквы, но такие метасимволы работают только с латинницей
говорит
[ ] - набор символов
[^...] - все что не ...
[^ \w] - все что не пробел и не буква
+ - мультипликатор, который говорит как минимум от 1 символа и больше
"" - заменить на пустоту.

Короче удалят все не-пробелы и не английские буквы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы