它表示它“期望参数1是字符串”。所以我想你不能在preg_match中有一个数组。但是我应该用什么来代替?谢谢preg_match array
$config['forbidden_names'] = array('admin', 'moderator', 'hoster');
if (preg_match($config['forbidden_names'], $string)) echo "Forbidden name!";
编辑:in_array也许。大声笑。 IM愚蠢
它表示它“期望参数1是字符串”。所以我想你不能在preg_match中有一个数组。但是我应该用什么来代替?谢谢preg_match array
$config['forbidden_names'] = array('admin', 'moderator', 'hoster');
if (preg_match($config['forbidden_names'], $string)) echo "Forbidden name!";
编辑:in_array也许。大声笑。 IM愚蠢
if (in_array($string, $config['forbidden_names']))
echo "Forbidden name!";
或者,如果你必须使用正则表达式:
if (preg_match('/^(?:admin|moderator|hoster)$/', $string))
echo "Forbidden name!";
试试这个
if (preg_match('/(admin|moderator|hoster)/i', $string)) echo "Forbidden name!";
BTW我宁愿添加到您的角色的模型/表中的新列/设置VAR是管理用户可以添加的东西。这对我来说看起来不安全。
这正是我们不想做的。这个数组只是一个例子。 – 2010-07-15 18:10:48
这是一个非常糟糕的例子,因为我可以在用户可以编辑他的角色的图像上显示图像,并且只需编辑dom,他就可以为自己分配一个管理员角色。所以不知道他有什么要求 – antpaw 2010-07-15 18:12:52
更改您的第二行:
if (in_array($string, $config['forbidden_names'])) echo "Forbidden name!";
的preg_match使用正则表达式,你应该远离它,除非你真的需要通过正则表达式字符串搜索,因为它是缓慢的。
您的正则表达式确实匹配以“admin”开头,在任何位置拥有“moderator”或以“hoster”结尾的字符串。 – Gumbo 2010-07-15 18:12:32
@Gumbo嗯该死的优先。修正了,但随时随地编辑。 – Artefacto 2010-07-15 18:30:53