Странное поведение preg_replace

2People

Новичок
Странное поведение preg_replace

Мне кажется что это странное поведение функции
PHP:
preg_replace ("/\W\S/", "", $name);
Попробовал потестировать работу, и случайно набрал строку:
Код:
$$$%#$%
В результате остаётся:
Код:
%

В других вариантах работает как я и ожидал, т.е. остаются только буквы и пробел.
 

neko

tеam neko
то что ты написал означает по русски:
заменить НЕ "word" character ЗА которым идет НЕ whitespace на пустое место
и действительно у тебя идет 3 пары которые этом условию удовлетворяют
а один символ остается
 

svetasmirnova

маленький монстрик
Это не странное поведение: в регулярном выражении последовательность из двух символов, а в строке нечётное количество знаков
 

2People

Новичок
Мне кажется, что надо написать так:
PHP:
$name=preg_replace ("/[\W\S]{*}/", "", $name);
Но это не работает.
Скажите пожалуйста, как правильно написать то, что мне надо.
 

2People

Новичок
Автор оригинала: neko
/[^\w]/
только ещё чтобы пробелы не резал и резал цифры. А какраз это сделать у меня не получается.

(мне надо, как я написал в первом посте, оставить буквы и пробел, остальное удалять)
 
Сверху