我对PHP很新,我在this tutorial之后为我的网站设置了“成员区”。页面底部附近的代码似乎有问题。
当尝试从用户名字段中挑选出无效字符时,会设置数组$ junk。
$junk = array('.' , ',' , '/' , '\' , '`' , ';' , '[' , ']' , '-', '_', '*', '&', '^',
'%', '$', '#', '@', '!', '~', '+', '(', ')', '|', '{', '}', '<', '>', '?', ':', '"', '=');
这段代码为我返回语法错误。
现在,我首先想到的是'#'或'('和')'导致问题,因为它们通常用于html和php。删除错误后仍然会返回错误。
我是php的新手,所以它很可能只是我遗漏的一些小语法错误。任何输入都会很棒。谢谢!
编辑:此外,如果有更简单的方法,请告诉我!
答案 0 :(得分:1)
对于'\'字符,您需要将其写为
'\\'
答案 1 :(得分:1)
反斜杠需要转义:'\\'
。这是因为\'
为你提供了一个文字撇号,否则你无法进入一个单独引用的字符串。
答案 2 :(得分:0)
有一种更简单的方法可以做到这一点,正则表达式。 如果您想将用户名设置为仅接受字母数字字符,
$ user = preg_replace(“/ [^ 0-9a-zA-Z] + /”,“”,$ user);
表达式基本上是说,用“”替换不是0-9,a-z,A-Z的任何东西。如果你想允许“@”,“。” (句号)和“ - ”和“_”符号:
$user = preg_replace("/[^0-9a-zA-Z\@\.\-\_]+/", "", $user);
正则表达式是一个非常强大的工具。它们可以在大多数语言中使用,包括javascript和PHP。因此值得花时间学习它们。
答案 3 :(得分:0)
对于较小的数组,创建一个字符串,然后调用str_split将其作为字符数组。
$junk = str_split('.,/\\`;[]-_*&^%S#@!~+()|{}<>?:"=')
我个人会按以下顺序使用字符
~`!@#$%^&*()-_+={}[]\|;:'",.<>/?
因为这是他们在我的键盘上的方式。但这只是一个小问题。我知道原始字符串中缺少'(单引号)。
验证输入的更好方法涉及正则表达式。