W3docs

filter_var()

PHP propose filter_var() pour valider et assainir les données utilisateur : emails, entiers, URL et bien plus.

Introduction

filter_var() est l'outil intégré de PHP pour valider et assainir une valeur unique. Valider signifie vérifier si une valeur correspond à un format attendu (un vrai e-mail, un entier dans une plage, une URL valide) et retourner la valeur si c'est le cas, ou false sinon. Assainir signifie nettoyer une valeur en supprimant ou en échappant les caractères indésirables.

Ne faites jamais confiance aux données provenant de l'extérieur de votre script — champs de formulaire, chaînes de requête, cookies, payloads d'API. Les passer par filter_var() avant de les stocker, les afficher ou les utiliser est l'un des moyens les plus simples de garder votre application sécurisée et prévisible. Cette page couvre la syntaxe, les deux modes (validation vs. assainissement), les filtres et indicateurs courants, ainsi que les pièges fréquents.

Syntaxe

filter_var(mixed $value, int $filter = FILTER_DEFAULT, array|int $options = 0): mixed
ParamètreObligatoireDescription
$valueouiLa valeur à filtrer.
$filternonL'identifiant du filtre à appliquer, par exemple FILTER_VALIDATE_INT. Par défaut FILTER_DEFAULT, qui n'effectue aucun filtrage.
$optionsnonUn tableau associatif d'options/indicateurs, ou une constante d'indicateur unique, pour affiner le filtre.

Valeur de retour : la valeur filtrée (et éventuellement convertie) en cas de succès, ou false en cas d'échec. Notez qu'un filtre de validation retourne la valeur elle-même — comparez donc toujours avec === lorsque la valeur valide pourrait être fausse (comme 0 ou une chaîne vide).

Validation des données

La validation répond à une question oui/non : cette valeur est-elle acceptable ? Le filtre retourne la valeur en cas de succès et false en cas d'échec.

Valider une adresse e-mail

php— editable, runs on the server

Les filtres de validation les plus utiles sont :

FiltreValide
FILTER_VALIDATE_INTUn entier (optionnellement dans une plage min_range/max_range).
FILTER_VALIDATE_FLOATUn nombre à virgule flottante.
FILTER_VALIDATE_BOOLEAN"1", "true", "on", "yes"true ; "0", "false", "off", "no", ""false.
FILTER_VALIDATE_EMAILUne adresse e-mail.
FILTER_VALIDATE_URLUne URL.
FILTER_VALIDATE_IPUne adresse IPv4/IPv6.
FILTER_VALIDATE_REGEXPUne valeur correspondant à un motif PCRE.

Le piège de === false

Puisqu'un filtre de validation retourne la valeur, un résultat de 0 ou "0" est valide mais faux. Utilisez toujours une comparaison stricte :

php— editable, runs on the server

Assainissement des données

L'assainissement ne rejette pas une valeur — il la nettoie et retourne la chaîne nettoyée.

Assainir une adresse e-mail

php— editable, runs on the server

Filtres d'assainissement courants :

FiltreEffet
FILTER_SANITIZE_EMAILSupprime les caractères interdits dans un e-mail.
FILTER_SANITIZE_URLSupprime les caractères interdits dans une URL.
FILTER_SANITIZE_NUMBER_INTConserve les chiffres et +/-.
FILTER_SANITIZE_NUMBER_FLOATConserve les chiffres, +/-, et (avec des indicateurs) .,e.
FILTER_SANITIZE_SPECIAL_CHARSEncode en HTML <, >, &, " et autres.
FILTER_SANITIZE_FULL_SPECIAL_CHARSComme htmlspecialchars() avec ENT_QUOTES.

Remarque : FILTER_SANITIZE_STRING a été déprécié dans PHP 8.1. Pour nettoyer des chaînes destinées à la sortie HTML, préférez htmlspecialchars() au moment de l'affichage.

Utilisation des options et des indicateurs

Le troisième argument affine un filtre. Passez-le sous forme d'un tableau avec 'options' (et optionnellement 'flags') :

php— editable, runs on the server

Les indicateurs peuvent également être passés directement comme troisième argument lorsque vous n'avez pas besoin de la forme tableau :

php— editable, runs on the server

Validation vs. assainissement — quand utiliser lequel

  • Valider quand vous avez besoin d'une décision oui/non : rejeter la requête, afficher une erreur, réessayer. Utilisez les filtres de validation pour les e-mails, les nombres, les URL et les adresses IP dans les formulaires et les API.
  • Assainir quand vous devez accepter la saisie mais souhaitez la nettoyer des caractères dangereux ou parasites avant utilisation.
  • Les deux sont complémentaires — un schéma courant consiste à valider en entrée et à échapper (par exemple avec htmlspecialchars()) en sortie, plutôt que de se fier uniquement aux filtres d'assainissement.

Pièges courants

  • Un filtre de validation retourne la valeur, pas true. Comparez avec === false pour détecter un échec.
  • filter_var() fonctionne sur une seule valeur scalaire. Pour filtrer plusieurs valeurs à la fois, utilisez filter_var_array() ou, pour les données de requête, filter_input_array().
  • FILTER_VALIDATE_BOOLEAN retourne null (pas false) pour les valeurs non reconnues uniquement si vous passez FILTER_NULL_ON_FAILURE ; sinon il retourne false.
  • Ne vous fiez pas aux filtres d'assainissement pour l'échappement en sortie critique pour la sécurité — échappez au moment du rendu à la place.

Sujets connexes

Conclusion

filter_var() est une manière compacte et fiable de valider et d'assainir des valeurs individuelles en PHP. Utilisez les filtres de validation pour accepter ou rejeter les saisies, les filtres d'assainissement pour les nettoyer, et n'oubliez pas de comparer les résultats de validation avec === false. Combiné à filter_var_array() pour les données en masse et à htmlspecialchars() pour la sortie, il constitue la base d'une gestion sécurisée des entrées.

Pratique

Pratique
Quelle est la fonction de filter_var() en PHP ?
Quelle est la fonction de filter_var() en PHP ?
Was this page helpful?