2011-09-02 5 views
-1

Je tente d'écrire une classe de validation en php et j'ai rencontré un problème. J'utilise le code suivant pour vérifier une valeur par rapport à un modèle regex défini, mais lorsque j'essaie d'exécuter le script, je reçois un message d'erreur disant:regex pour vérifier un motif regex valide dans php

"Attention: preg_match() [function.preg-match]: Normal vide expression dans C: \ wamp \ www \ valide \ Class.Validate.php sur la ligne 109 "

Quelqu'un peut-il repérer mon erreur?

public function is_regex($var, $expression, $msg) 
    { 
     if (trim($var) <> "") { 
      $Valid = (bool)preg_match($expression, $var); 
      if ($Valid == false) { 
       return $msg; 
      } 
     }  
    } 

et je me sers de ce pour appeler la fonction

array('Type'=>'Regex','Var'=>$_POST['test'], 'Expression'=>'[A-Za-z]{1,20}$','Msg'=>'Expression does not match')  
+0

hm .. Vous envoyez ce tableau en tant que premier argument? – k102

+0

Le problème réside dans le code d'invocation 'is_regex' que vous n'avez * pas * montré ici. (De plus, j'éviterais les touches de tableaux mixtes, ce qui n'est pas vraiment webapp.) – mario

+0

Quelle est la ligne 109 de 'C: \ wamp \ www \ valide \ Class.Validate.php'? Où se trouve la connexion entre la fonction et le tableau que vous utilisez pour appeler la fonction? – Oswald

Répondre

0

Pour autant que je vois, vous devez joindre en caractères regexp enceinte, par exemple | de sorte que votre tableau de contrôle sera comme

array('Type'=>'Regex','Var'=>$_POST['test'], 'Expression'=>'|[A-Za-z]{1,20}$|','Msg'=>'Expression does not match') 

Vous pouvez également définir le caractère en fonction, mais dans ce cas, si vous avez ce personnage regexp, vous aurez besoin pour échapper

+0

Essayé l'exemple que vous avez fourni et ne pas aller. Je ne pense pas que le problème réside dans la façon dont j'appelle la fonction, mais plutôt la fonction elle-même n'est pas formatée correctement, mais après avoir essayé plusieurs varitions de guillemets simples et doubles pour les variables, je n'ai rien trouvé qui fonctionne. –