Remplacement de ereg par preg_match pour PHP5

Fermé
VINCENTNINI - Modifié par VINCENTNINI le 13/02/2012 à 17:34
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 13 févr. 2012 à 19:20
Bonjour,
devant transformer une vérification de formulaire pour tourner sous PHP5, je suis obligé d'utiliser preg_match en lieu et place de ereg.

Apres avoir fait ce remplacement j' ai cette ligne
if(!preg_match((''[[A-Za-z0-9_]]{4,20}),$_POST[TB_Nom_Utilisateur]))
{
echo "Votre nom d utilisateur doit comporter entre 4 et 20 caractères";
echo "L utilisation de l underscore est autorisée";
}
elseif.........................

run donne un message d'erreur suivant :

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in .... ligne 19 soit la ligne modifiée.
Je suis peut etre aveugle mais je ne trouve pas l'erreur !!
Une idée serait la bienvenue !

Merci d'avance
A voir également:

1 réponse

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 13/02/2012 à 19:20
Salut VINCENTNINI,

- Il y a '' qui se balade au début de expression
- l'expression n'est pas entre guillemets
- l'expression n'est pas délimitée par des "/"
- les parenthèses dans l'expression ne sont pas nécessaires puisque tu ne captures rien

Cela fait beaucoup par rapport à la syntaxe décrite au manuel https://www.php.net/manual/en/function.preg-match.php

Une version corrigée serait :

if ( !preg_match("/[A-Za-z0-9_]{4,20}/",$_POST[TB_Nom_Utilisateur]) )

Cependant, je ne comprend pas très bien que ce ton expression vérifie, et je ne crois pas qu'elle fasse ce qu'elle est supposée faire.

Là elle va chercher dans la chaîne s'il y a une suite quelconque de 4 à 20 caractères qui remplissent la condition.

Par exemple si la chaîne vaut "&2+45 } 6789012345678901234 56", l'expression passera, car elle va rencontrer "6789012345678901234" qui remplit les conditions posées.

Si tu veux que cette condition soit vraie pour tous les caractères de la chaîne, il faut préciser que l'expression débute au début de la chaîne et se termine à la fin.

Comme cela :

if ( !preg_match("/^[A-Za-z0-9_]{4,20}$/",$_POST[TB_Nom_Utilisateur]) )

Mais bon, c'est toi qui vois, car je ne fais qu'essayer de deviner ce que tu veux faire.

Ai-je bien deviné ?


Dal
0