Preg_match

Invité
Invité n'ayant pas de compte PHPfrance

18 août 2008, 19:56

salut,

Je veux verifier si un nom contient des lettres et chiffres a la fin seulement, j ai mis cette fonction je pense que j ai oublie un signe:
if (!preg_match("#^[a-zA-Z0-9]$#",$nom))
{
	$Erreur .='<li>Nom comporte des caracteres insupportables</li>';
}

ViPHP
ViPHP | 3607 Messages

18 août 2008, 20:04

Bonsoir,
Ce que tu souhaites n'est pas très clair, il faudrait que tu donnes dex exemples représentatif...
Du genre:

_iuhdz67 => OK
i9oiuh_ => Pas Ok

Sinon à priori, je dirais qu'il y a un ^ de trop au début ;)

Un petit lien pour apprendre et tester ses regex: http://lumadis.be

Invité
Invité n'ayant pas de compte PHPfrance

18 août 2008, 22:26

abcdef => OK
abcdef123=> OK
abcdef_ => Pas OK
123abcdef => Pas OK
_123abcdef => Pas OK
abcdef123_ => Pas OK

le nom peut contenir des lettres et des chiffres, a force que ca doit commencer par lettres et terminer par lettres ou chiffres

ViPHP
ViPHP | 4039 Messages

18 août 2008, 23:13

Donc, soit que des lettres, soit des lettres suivis de chiffres ?

Alors, il faut un groupe qui valide des lettres (genre [a-zA-Z]*)

Et un groupe qui valide soit du vide soit des chiffres (du style [0-9]+)

Et ce dernier groupe doit se retrouver à la fin (tandis que le premier.. au début)

C'est environ ça ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
AB
ViPHP | 5818 Messages

18 août 2008, 23:47

Je veux verifier si un nom contient des lettres et chiffres a la fin seulement, j ai mis cette fonction je pense que j ai oublie un signe:
Oui le pb c'est qu'on ne sait pas très bien si tu veux dire
Je veux verifier si un nom contient (des lettres et chiffres) a la fin seulement
ou
Je veux verifier si un nom contient des lettres et (chiffres a la fin seulement)

ViPHP
ViPHP | 3607 Messages

19 août 2008, 09:18

Je veux verifier si un nom contient (des lettres et chiffres) a la fin seulement
ou
Je veux verifier si un nom contient des lettres et (chiffres a la fin seulement)
A priori, d'après les exemple qu'il a donné, ça semblerai être la deuxième...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 août 2008, 10:06

Un motif de ce genre, peut être?
[a-z][a-z0-9]*

le premier caractère est forcément une lettre, les suivants sont soit des lettres soit des chiffres (qui peuvent être mélangés comme a12b8)
Quand tout le reste a échoué, lisez le mode d'emploi...

Invité
Invité n'ayant pas de compte PHPfrance

21 août 2008, 01:42

Un motif de ce genre, peut être?
[a-z][a-z0-9]*

ca marche pas :(
le premier caractère est forcément une lettre, les suivants sont soit des lettres soit des chiffres (qui peuvent être mélangés comme a12b8)

mariq28
Invité n'ayant pas de compte PHPfrance

22 août 2008, 12:13

$string = "Ma Phrase";
$regex = "/^[a-zA-Z0-9]+$/";

if (!preg_match($regex, $login)) {
echo "Erreur";
}
else {
echo "Cette chaine marche"
}

mariq28
Invité n'ayant pas de compte PHPfrance

22 août 2008, 12:15

$string = "MaPhrase";
$regex = "/^[a-zA-Z][a-zA-Z0-9]+$/";

if (!preg_match($regex, $login)) {
echo "Erreur";
}
else {
echo "Cette chaine marche"
}

ViPHP
ViPHP | 3607 Messages

22 août 2008, 13:18

Il y a des espaces aussi... tu ne nous avais pas dit...?
Je pense que si tu veux arriver à quelque chose il faut un tant soit peu t'investir dans tes recherches, et nous aider sur tes buts à atteindre, parce que nous on peut rien deviner...