preg_match允许所有键盘符号的问题,但禁止其他符号
问题描述:
if(preg_match("/^[a-zA-Z0-9\s\!\"\№\;\%\:\?\*\(\)\<\>\/\#\$\^\&\@\-\+\_\=\|\,\.\~\{\}\[\]\'\\\\]+$/", $sometext))
{//only symbols from keyboard entered
}
else
{//bad symbols entered
}
我测试了这个功能很多,看起来像它工作正常。但是,我发现它适合此字符串:preg_match允许所有键盘符号的问题,但禁止其他符号
how are you?'<>"\|/à
它不应该工作,因为符号à
是不允许的。 请不要告诉我关于stripslashes
,我知道。此外,我发现如果我想允许\
符号,我不得不写\\
,但\\\\
。我也是如此。 谢谢。
答
这似乎工作,虽然我似乎无法得到任何字符到模式(它有一个\呢?):
if(preg_match("/^[a-zA-Z0-9\s!\"\?;%:?*()<>\/#$\^&@\-+_=|,.~{}\[\]'\\\\]+$/", $sometext))
我已经找到了一个小错误,有些反斜杠被切断。最后一句话是:另外我发现如果我想允许\符号,我不得不写\\(两个没有空格的反斜杠),但是\\ \ \(四个反斜杠没有空格)。我也是,谢谢。 – Geremy 2011-02-16 00:44:09