logo oujood
🔍

Les filtres de PHP validation et netoyage des données

OUJOOD.COM

PHP cours tutorial

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 : "&lt;script&gt;alert('XSS')&lt;/script&gt;"

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