preg_match允许所有键盘符号的问题,但禁止其他符号

时间:2011-02-16 00:43:17

标签: php preg-match

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

我经常测试这个功能,看起来效果很好。但是,我发现它也适用于这个字符串:

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

它不应该起作用,因为不允许使用符号à。 请不要告诉我stripslashes,我知道。我也发现如果我想允许\符号,我必须写\\,而不是\\\\。我也是。 谢谢。

1 个答案:

答案 0 :(得分:0)

这似乎有用,虽然我似乎无法将No字符放入模式中(它有一个\?而不是):

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