OUJOOD.COM
Filtres PHP
PHP fournit un ensemble de filtres pour valider et assainir les données. Ces filtres sont très utiles pour sécuriser les entrées utilisateurs et éviter les failles XSS, injections ou erreurs de format.
Filtres de nettoyage (Sanitization)
| Constante | Description |
|---|---|
FILTER_SANITIZE_STRING |
Supprime les balises et encode les caractères spéciaux. |
FILTER_SANITIZE_EMAIL |
Supprime les caractères non autorisés dans une adresse email. |
FILTER_SANITIZE_URL |
Supprime les caractères non autorisés dans une URL. |
FILTER_SANITIZE_NUMBER_INT |
Supprime tous les caractères sauf les chiffres et les signes + -. |
FILTER_SANITIZE_NUMBER_FLOAT |
Supprime tous les caractères sauf les chiffres, + - et éventuellement . ou , |
FILTER_SANITIZE_SPECIAL_CHARS |
Convertit les caractères spéciaux en entités HTML. |
FILTER_SANITIZE_ENCODED |
Encode et supprime les caractères illégaux. |
FILTER_UNSAFE_RAW |
Ne filtre pas la donnée (attention à l'utilisation). |
Filtres de validation
| Constante | Description |
|---|---|
FILTER_VALIDATE_EMAIL |
Valide qu’une valeur est une adresse email correcte. |
FILTER_VALIDATE_URL |
Valide qu’une valeur est une URL correcte. |
FILTER_VALIDATE_INT |
Valide qu’une valeur est un entier. |
FILTER_VALIDATE_FLOAT |
Valide qu’une valeur est un nombre flottant. |
FILTER_VALIDATE_BOOLEAN |
Valide qu’une valeur est un booléen. |
FILTER_VALIDATE_IP |
Valide qu’une valeur est une adresse IP. |
FILTER_VALIDATE_REGEXP |
Valide une valeur en fonction d’une expression régulière. |
FILTER_CALLBACK |
Applique une fonction personnalisée pour filtrer la donnée. |
Exemples pratiques
Exemple : 📋 Copier le code
$texte = "<h1>Bonjour</h1>"; $texte_nettoye = filter_var($texte, FILTER_SANITIZE_STRING); echo $texte_nettoye; // Sortie : "Bonjour"
Exemple : 📋 Copier le code
$email = "exemple@@domain.com"; $email_nettoye = filter_var($email, FILTER_SANITIZE_EMAIL); echo $email_nettoye; // Sortie : "exemple@domain.com"
Exemple : 📋 Copier le code
$url = "https://exemple.com/te#st"; $url_nettoyee = filter_var($url, FILTER_SANITIZE_URL); echo $url_nettoyee; // Sortie : "https://exemple.com/test"
Exemple : 📋 Copier le code
$valeur = "123abc"; $valeur_nettoyee = filter_var($valeur, FILTER_SANITIZE_NUMBER_INT); echo $valeur_nettoyee; // Sortie : "123"
Exemple : 📋 Copier le code
$valeur = "12.3abc"; $valeur_nettoyee = filter_var($valeur, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); echo $valeur_nettoyee; // Sortie : "12.3"
Exemple : 📋 Copier le code
$texte = "<script>alert('XSS')</script>";
$texte_nettoye = filter_var($texte, FILTER_SANITIZE_SPECIAL_CHARS);
echo $texte_nettoye; // Sortie : "<script>alert('XSS')</script>"
Exemple : 📋 Copier le code
$email = "user@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Email valide";
} else {
echo "Email invalide";
}
Exemple : 📋 Copier le code
$url = "https://www.example.com";
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo "URL valide";
} else {
echo "URL invalide";
}
Exemple : 📋 Copier le code
$age = 25;
$options = ["options" => ["min_range" => 1, "max_range" => 120]];
if (filter_var($age, FILTER_VALIDATE_INT, $options)) {
echo "Entier valide";
} else {
echo "Entier invalide";
}
Exemple : 📋 Copier le code
$nombre = "12.34";
if (filter_var($nombre, FILTER_VALIDATE_FLOAT)) {
echo "Float valide";
} else {
echo "Float invalide";
}
Exemple : 📋 Copier le code
$valeur = "true";
if (filter_var($valeur, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) !== null) {
echo "Booléen valide";
} else {
echo "Booléen invalide";
}
Exemple : 📋 Copier le code
$ip = "192.168.0.1";
if (filter_var($ip, FILTER_VALIDATE_IP)) {
echo "IP valide";
} else {
echo "IP invalide";
}
Exemple : 📋 Copier le code
$texte = "ABC123";
$pattern = "/^[A-Z0-9]+$/";
if (filter_var($texte, FILTER_VALIDATE_REGEXP, ["options" => ["regexp" => $pattern]])) {
echo "Regex valide";
} else {
echo "Regex invalide";
}
Exemple : 📋 Copier le code
// Fonction callback personnalisée
function clean_username($str) {
return strtolower(str_replace(' ', '_', trim($str)));
}
$username = "John Doe";
$clean = filter_var($username, FILTER_CALLBACK, ["options" => "clean_username"]);
echo $clean; // Sortie : "john_doe"
Par carabde 20 Aout 2014