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

我测试了这个功能很多,看起来像它工作正常。但是,我发现它适合此字符串:preg_match允许所有键盘符号的问题,但禁止其他符号

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

它不应该工作,因为符号à是不允许的。 请不要告诉我关于stripslashes,我知道。此外,我发现如果我想允许\符号,我不得不写\\,但\\\\。我也是如此。 谢谢。

+1

我已经找到了一个小错误,有些反斜杠被切断。最后一句话是:另外我发现如果我想允许\符号,我不得不写\\(两个没有空格的反斜杠),但是\\ \ \(四个反斜杠没有空格)。我也是,谢谢。 – Geremy 2011-02-16 00:44:09

回答

0

这似乎工作,虽然我似乎无法得到任何字符到模式(它有一个\呢?):

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