它表示它「期望參數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