尝试设置无效字符数组时出现语法错误

时间:2011-07-26 01:51:16

标签: php arrays syntax syntax-error

我对PHP很新,我在this tutorial之后为我的网站设置了“成员区”。页面底部附近的代码似乎有问题。

当尝试从用户名字段中挑选出无效字符时,会设置数组$ junk。

$junk = array('.' , ',' , '/' , '\' , '`' , ';' , '[' ,  ']' , '-', '_', '*', '&', '^',
'%', '$', '#', '@', '!', '~', '+', '(', ')', '|', '{', '}', '<', '>', '?', ':', '"', '='); 

这段代码为我返回语法错误。

现在,我首先想到的是'#'或'('和')'导致问题,因为它们通常用于html和php。删除错误后仍然会返回错误。

我是php的新手,所以它很可能只是我遗漏的一些小语​​法错误。任何输入都会很棒。谢谢!

编辑:此外,如果有更简单的方法,请告诉我!

4 个答案:

答案 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#@!~+()|{}<>?:"=')

我个人会按以下顺序使用字符

~`!@#$%^&*()-_+={}[]\|;:'",.<>/?

因为这是他们在我的键盘上的方式。但这只是一个小问题。我知道原始字符串中缺少'(单引号)。

验证输入的更好方法涉及正则表达式。