Remplacement de ereg par preg_match pour PHP5
VINCENTNINI
-
[Dal] Messages postés 6373 Statut Contributeur -
[Dal] Messages postés 6373 Statut Contributeur -
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
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:
- Remplacement de ereg par preg_match pour PHP5
- Remplacement coco - Accueil - Réseaux sociaux
- Coco.fr remplacement - Accueil - Réseaux sociaux
- Remplacer disque dur par ssd - Guide
- Remplacement carte graphique - Guide
- Remplacer par word - Guide
1 réponse
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 :
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 :
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
- 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