Ajouter un espace dans se Rejex :

Avatar du membre
Eléphanteau du PHP | 25 Messages

13 janv. 2015, 13:03

Yo ! Dites, quelqu'un sait ce que je devrai faire pour autoriser les espaces dans se rejex (que j'ai trouvé sur internet).
preg_match('`^[[:alnum:]]{6,40}$`', $_POST['question'])
Merci ^^

ViPHP
ViPHP | 3607 Messages

17 janv. 2015, 20:20

Bonsoir,

La regex en question peut-être expliqué ici par exemple : https://www.regex101.com/r/hD2mL6/1
En gros : une chaine de caractère comprenant entre 6 et 40 caractères [:alnum:] et rien d'autre.
Pour ajouter les espaces dans les caractères autorisés il faut donc retoucher la partie [[:alnum:]]
les crochets "extérieurs" indiquent une classe caractère : [abc] veut par exemple dire : caractère a, b ou c.
La regex qui nous occupe utilise à l’intérieur de cette classe de caractère une "méta POSIX" : [:alnum:] (plus d'infos : http://www.lumadis.be/regex/tuto_pcre.php#classecar )
Il faut donc ajouter le caractère "espace" aux côtés de cette "méta POSIX"

ça donnerait donc :
preg_match('`^[ [:alnum:]]{6,40}$`', $_POST['question'])
Ou pour un peu plus de flexibilité (on ajoute également les tabulations :
preg_match('`^[[:blank:][:alnum:]]{6,40}$`', $_POST['question'])
Pour finir, un bon tutoriel en français : http://www.lumadis.be/regex/tuto_pcre.php

Bon courage !