probleme de regex

VaN
Mammouth du PHP | 1107 Messages

26 sept. 2005, 19:42

<?php
$pattern2 = "#^[_a-zA-Z0-9-]$#";
// on verifie si les champs obligatoires sont remplis
	if(isset($_POST['login']) && $_POST['login']!="")
	{	
		if (!preg_match($pattern2,$_POST['login']))
		{
			echo "<center><font class=\"warning\">Le login comporte des caractères interdits.<br />Veuillez le saisir à nouveau.</font></center><br /><br />";
		}
		else
		{
			$login = $_POST['login'];
		}
	}?>
un login de type 'gfgg' ou 'sqfqdfq' me renvoie le mesage d'erreur "Le login comporte des caractères interdits.<br />Veuillez le saisir à nouveau.". je ne comprends pas. probleme dans mon if() ou dans ma regex ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 sept. 2005, 20:08

salut, essaie sans la négation
if (preg_match($pattern2,$_POST['login']))

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

VaN
Mammouth du PHP | 1107 Messages

26 sept. 2005, 20:48

il ne marque pas le message d'erreur, mais il accepte les caractères du genre <, tous les caracteres a interdire dans des champs texte , ce que je veux éviter. Il y'a peut etre un moyen plus simple sinon ?

Mammouth du PHP | 983 Messages

26 sept. 2005, 21:07

Solution plus simple ? euh.. appeler Ripat ;)

Plus sérieusement, connais tu a fonction ctype_alnum?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 sept. 2005, 21:16

euh.. récuperation de la doc preg_match
$pattern2 = "/^[a-z0-9][\w.-]*$/i";
if (!preg_match($pattern2,$_POST['login']))
        {
            echo "<center><font class=\"warning\">Le login comporte des caractères interdits.<br />Veuillez le saisir à nouveau.</font></center><br /><br />";
        }
        else
        {
            $login = $_POST['login'];
        } 

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute