La méthode classique par exemple pour filtrer une adresse Email est d’utiliser une expression régulière comme suit :
$email = 'nom.prenom@exemple.com';
$expression = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/";
if (preg_match($expression, $email))
{
echo "Cette adresse est valide.";
}
else
{
echo "Cette adresse est invalide";
}
Le protocole de filtrage facilite cette tache en offrant un filtre pour la validation des adresses Email :
$email = 'nom.prenom@exemple.com';
if(filter_var($email, FILTER_VALIDATE_EMAIL) !== false)
{
echo "Cette adresse est valide."
}
else
{
echo "Cette adresse est invalide.";
}
Utiliser la deuxième solution a plusieurs bénéfices. Premièrement, il rend le code plus lisible. vous n’aurez plus a valider l’expression régulière et la connaître pour voir ce qu’elle est sensée valider. Secundo, il réduit le pourcentage d’erreur.
voici un deuxieme exemple qui utilise la fonction filter_input qui a pour role de recuperer une variable externe (GET, POST, SESSION, COOKIE etc.) et la filtre
$search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
$search_url = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_ENCODED);
echo "Vous avez recherché $search_html.\n";
echo "Nouvelle recherche.";
Ce code affiche
Vous avez recherché Me & son. <a href='?search=Me%20%26%20son'>Nouvelle recherche.</a>
Il existe un nombre de validateurs et de filtres que vous pouvez utiliser, ils se divisent essentiellement en deux types: les filtres de validation et les filtres de nettoyage. ils incluent le test sur les types (chaines de caracteres, entiers et booleens etc), le test d’URLS, d’IP etc. Ces fonctions sont toujours plus rapides que n’importe quelle fonction que vous ecrivez puisqu’ils sont ecrites directement en C.
