Preg_match sur un champs nom prénom

Résolu
djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   -  
 webjfr -
Bonjour,

Je souhaite vérifier le champs d'un formulaire à l'aide d'un pregmatch, mais cette fonction n'est pas évidente à utiliser au début.

La vérification doit être ainsi :
- $champs est le champ nom prénom
- $champs ne doit contenir des lettres et espaces, ainsi que les caractères - ' . (tiret/quote/simple point)
- La partie caractère ne doit pas se répéter consécutivement (éviter d'avoir O''Connor par exemple) ET si possible éviter un caractère après un autre (éviter O'-Connor)

Exemple :

Jean-Paul O'Connor >> Vrai
Jean'Paul O-Connor >> Vrai

Jean--Paul O'Connor >> Faux

Actuellement j'ai ceci , mais ca ne traite pas la partie caractère :

preg_match('`^[a-zA-Z]+$`',$_POST[$champ])


Merci.

10 réponses

djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   95
 
Up ?
0
webjfr
 
Salut,

Va faire un tour ici :
http://www.expreg.com/pregmatch.php

Et pense à regarder la partie PCRE aussi.
0
djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   95
 
Je suis sur ce site déjà pour essayer de comprendre comment faire, mais je ne trouve pas la solution ...
0
webjfr
 
heu

en gros ca donne un truc du style :
[a-zA-Z](['-.]?[a-zA-Z]){1,25}

tu as aussi oublie le nombre de caractère.

Par contre, je ne sais pas comment ca se passe pour les espaces.

Tu ferais bien de séparer via 2 champs, le nom et le prénom.

Sinon, tu peux aussi utiliser les filter_var() de php5, il y a pas mal de clause prédéfini (regarde les constantes).

Pour les doublons de '' -- en expression regulière ça va être une merdouille pas croyable à faire

J'ai pas testé, mais tu pourrais faire des tests du style :
`^([a-zA-Z](([-.']{1})?[a-zA-Z])+){1,25}$`

Tu me tiendras au courant
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   95
 
Ca à l'air de bien fonctionner ta méthode ... Comme quoi y'a des dingues de regex faut croire :)

Si je pouvais, je te payerai un café ; heuresement que t'es passé par là pour me sauver la mise ;)

J'ai juste ajouté l'espace et les chiffres 0-9

`^([a-zA-Z0-9](([\ \-\.\']{1})?[a-zA-Z0-9])+){1,30}$`

Thanks a lot ! Résolu
0
webjfr
 
Re,

Je me doutais que ca fonctionnerait, sauf pour l'espace j'avais un doute sur l'echappement.

Sinon, tu fais un truc bien dégue la !

Pour faire plus propre
[a-zA-Z0-9] >> remplace par >> :alnum:

Oublie pas, il y a 2 [[
alnum s'est : alphanumérique

Ca fera une ligne plus joli à lire.
0
webjfr
 
heu

je remplace les [ par des |
||:alnum:||

Ca bug avec la methode wiki du site...
0
djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   95
 
Désolé de t'embeter car j'y tate pas encore grand chose au regex mais ca devrait venir au fur et à mesure.

Tu pourrais pas me dire comment passer en preg_match cette syntaxe stp ?

<n>chiffres (1)tiret (5)chiffres (1)tiret (1)chiffre[de 1 à 5] (1)point extension |jpg|jpeg|gif|png

Exemple :

153-12345-4.png

Merci au passage si ton cerveau à envie de bosser ;)
0
webjfr
 
Salut,

Franchement, tu veux que je te le disse alors que j'estime que c'est une énorme connerie ?

heu
(:digit:{3})([-]{1})(:digit:{5})([-]{1})(:digit:{1})

Le mieux, c'est de récupèrer le nom comme ça (pas tester hein !) et pour l'extension, tu le recuperes avec un getimagesize()
Parce que si l'image n'est pas conforme, ca retournera une erreur, et un peu de sécurité, ca ne fait jamais de mal !
En outre, tu récupèreras les infos pour l'affichage, les infos que W3C aime voir !

Voici ce qu'il faut :
<?php
if ($size = getimagesize($image))
{
$taille_pour_url = $size[3]; // retourne width="120" height="80"
$image_type = $size[mine]; // retourne le type mine

// puis tu switch le image_type
switch($image_type)
{
case 'image/gif':
$extension = '.gif';
break;
case 'image/jpeg':
$extension = '.jpg';
break;
case 'image/png':
$extension = '.png';
break;
default:
header('Location:erreur.php');
}
?>
0
webjfr
 
Bon

Faut pas oublier les [ et ] sur les liens :digit: il y en a 2 à chaque fois
0
djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   95
 
Salut webjr ;)

Je te remercies, mais j'avais bidouillé autre chose en attendant car j'ai été un peu trop rapide et mes besoins ne sont plus les mêmes.

Par ex. j'ai fais le pregmatch sur les 5-chiffres 1-Tiret 1-Chiffre de 1 à 5 sur chaque fichier d'un répertoire (avec readdir).

Pour l'extension, je l'ai zappé dans la recherche car dans les dossiers, il n'y a que des images ; mais il me fallait savoir quel type d'image pour pouvoir l'afficher dans une page.

Le getimagesize() je m'en suis servi également mais pour pouvoir centrer verticalement les images, en calculant le margin-top nécessaire.

Ca avances petit à petit ce que je suis en train de faire, je connaissait pas preg_match (jamais eu la nécessité pour le moment) mais c'est pratique même si ca reste complexe à créer niveau syntaxe !

Je te remercies webjr et j'espères que tu repassera sur un autre de mes posts à l'occasion si nécessaire ;)
0
webjfr
 
AH bah si tu veux me revoir faudrait peut être respecter mon pseudo, parce que tu en détruis le sens !

web pour webmaster
jfr pour jfronline

Mais c'est vrai que les expressions regulière c'est génial, mais c'est pas si compliquer que ça !

Par contre, quand tu montres ton code aux gens, tout de suite sa fait pro !

C'est pour ca que les gens les aiment !
0