Je veux créer une validation de formulaire et je veux m'assurer que les utilisateurs ne saisiront aucun code dangereux dans les zones de texte, donc je veux utiliser preg_match
pour faire ça. Ce que je n’aime pas, c’est que les utilisateurs tapent (quelque chose au lieu de mots de a-z, mots de A-Z et chiffres). Maintenant, comment puis-je utiliser preg_match
ici?
Réponses:
3 pour la réponse № 1Cette expression régulière n'autorise que les lettres et les chiffres.
/^[A-Zd]+$/i
utilisé dans preg_match
if(preg_match("/^[A-Zd]+$/i", $string)) {
echo "Good";
} else {
echo "Bad";
}
Regex101 démo: https://regex101.com/r/wH4uQ3/1
le ^
et $
nécessite la correspondance de chaîne entière (ce sont des ancres). le []
est une classe de caractères, ce qui signifie que tout caractère à l'intérieur est autorisé. le +
signifie un ou plusieurs des caractères / groupes précédents (on parle de quantificateur). le A-Z
est une plage que la classe de caractères comprend comme étant des lettres a-z
. d
est un nombre. le /
s sont des délimiteurs indiquant le début et la fin de l’expression rationnelle. le i
est un modificateur rendant le regex insensible à la casse (pourrait l'enlever et ajouter a-z
les lettres minuscules sont également autorisées).
Démo PHP: https://eval.in/486282
Remarque La démonstration PHP échoue car les espaces ne sont pas autorisés. Pour autoriser les espaces h
ou s
dans la classe de caractères (le s
comprend h
donc pas besoin des deux; h
est pour les espaces horizontaux.).
-1 pour la réponse № 2
Voici un exemple simple:
vous pouvez en savoir plus sur: http://php.net/manual/en/function.preg-match.php
Vous pouvez aussi faire ceci: $email = htmlspecialchars($_POST["email"]);
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}