PHP - folksonomy标记检查正则表达式

我正在尝试创建一个正则表达式来检查自由格式folksonomy系统的已提交标签的值。这就是我现在拥有的。
if (!preg_match('/([^-\a-zA-Z0-9._@'])+/',$proposedtag)) {
    //true, good
    return true;
} else {
    //false, bad characters
    return false;
}
我想允许:连字符,反斜杠,正斜杠,a-z,A-Z,0-9,句号,下划线,符号和单引号,并禁止所有其他。 我很确定一个否定的角色类是继续这个... 但是我上面的代码似乎允许其他字符(例如+),我不知道为什么。 另外作为旁注,我不确定我是否确定我不会无意中允许SQL注入。有小费吗?     
已邀请:
我相信你的角色类中的反斜杠字符是一个逃避问题。试试这个,它似乎在我喂它的测试上更好。注意反斜杠上的双重转义(我移到了末尾):
if (!preg_match('/([^-a-zA-Z0-9._@'\\])+/',$proposedtag)) {
    

要回复问题请先登录注册