2010-07-15 8 views
0

Il dit qu'il "s'attend à ce que le paramètre 1 soit chaîne". Donc je suppose que vous ne pouvez pas avoir un tableau dans preg_match. Mais que dois-je utiliser à la place? Mercipreg_match tableau

$config['forbidden_names'] = array('admin', 'moderator', 'hoster'); 


if (preg_match($config['forbidden_names'], $string)) echo "Forbidden name!"; 

éditer: in_array maybe. lol. im stupide

Répondre

1
if (in_array($string, $config['forbidden_names'])) 
    echo "Forbidden name!"; 

Ou si vous devez utiliser regex:

if (preg_match('/^(?:admin|moderator|hoster)$/', $string)) 
    echo "Forbidden name!"; 
+0

Votre expression régulière correspond aux chaînes qui commencent par 'admin', ont' moderator' à n'importe quelle position, ou se terminent par 'hoster'. – Gumbo

+0

@Gumbo Eh putain préséance. Corrigé, mais n'hésitez pas à modifier n'importe quand. – Artefacto

0

essayer cette

if (preg_match('/(admin|moderator|hoster)/i', $string)) echo "Forbidden name!"; 

BTW je préfère ajouter à votre modèle rôles/tableau d'une nouvelle colonne/paramètres var qui gère les choses que l'utilisateur est autorisé à ajouter. Cela semble peu sûr pour moi.

+0

C'est exactement ce que nous ne voulons pas faire. Ce tableau est juste un exemple. –

+0

un très mauvais exemple alors, parce que je peux imaginer une forme où l'utilisateur pourrait éditer ses rôles et en éditant seulement le dom il pourrait s'attribuer un rôle d'admin. donc pas sûr de ce qu'il ment – antpaw

1

Modifier votre deuxième ligne:

if (in_array($string, $config['forbidden_names'])) echo "Forbidden name!"; 

preg_match utilise une expression régulière, vous devriez rester loin de sauf si vous avez vraiment besoin de chercher dans une chaîne regex, car il est lent.