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


Syntax error trying to set up invalid character array

我是一个PHP新手,我正在按照本教程为我的站点设置一个"会员区"。页面底部的代码似乎有问题。

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

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

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

现在,我的第一个想法是'#'或'('和')'是导致问题的原因,因为它们通常在html和php中使用。删除后仍然返回错误。

我是新的php,所以它很可能只是一些小的语法错误,我错过了。任何意见都很好。谢谢!

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

对于'''字符,您需要这样写

''''

需要转义:''''。这是因为''为您提供了一个文字撇号,否则您无法将其放入单引号字符串中。

有一种更简单的方法来做到这一点,正则表达式。如果您想将用户名设置为只接受字母数字字符,则为

$ user = preg_replace ("/[^ 0-9a-zA-Z ]+/", ", $

用户);

这个表达式本质上是说,用"替换任何不是0-9,a-z, a-z的内容。如果你想允许"@","。"(句号)和"-"answers"_"符号:

<>之前$user = preg_replace("/[^0-9a-zA-Z'@';'-'_]+/", ", $user);之前

正则表达式是一个非常强大的工具。它们可以在大多数语言中使用,包括javascript和PHP。因此,花时间学习它们是值得的。

对于较小的数组,创建一个字符串,然后调用str_split将其作为字符数组。

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

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

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

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

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