preg_match проблема с разрешением всех символов клавиатуры, но запретить другие символы - PullRequest
1 голос
/ 16 февраля 2011
if(preg_match("/^[a-zA-Z0-9\s\!\"\№\;\%\:\?\*\(\)\<\>\/\#\$\^\&\@\-\+\_\=\|\,\.\~\{\}\[\]\'\\\\]+$/", $sometext))
{//only symbols from keyboard entered
}
else
{//bad symbols entered
}

Я много раз тестировал эту функцию и, похоже, она работает нормально.Но я обнаружил, что это работает и для этой строки:

how are you?'<>"\|/à

Это не должно работать, потому что символ à не разрешен.Пожалуйста, не говорите мне о stripslashes, я знаю это.Также я обнаружил, что если я хочу разрешить символ \, я должен написать не \\, а \\\\.Я тоже. Спасибо.

1 Ответ

0 голосов
/ 16 февраля 2011

Похоже, это работает, хотя я не могу добавить в шаблон символа "Нет" (вместо него есть \?):

if(preg_match("/^[a-zA-Z0-9\s!\"\?;%:?*()<>\/#$\^&@\-+_=|,.~{}\[\]'\\\\]+$/", $sometext))
...