Position actuelle: Accueil> Derniers articles> Une erreur s'est produite à l'aide de filter_var_array? Résumé des FAQ et des solutions détaillées

Une erreur s'est produite à l'aide de filter_var_array? Résumé des FAQ et des solutions détaillées

gitbox 2025-06-15

Dans PHP, Filter_Var_Array est une fonction très pratique pour le filtrage par lots et la validation des données dans les tableaux. Il peut traiter plusieurs variables en même temps et spécifier différentes règles de filtrage pour chaque variable, ce qui facilite considérablement la vérification des données. Cependant, lors de l'utilisation réelle, de nombreux développeurs ont rencontré des erreurs courantes, ce qui a fait que le code ne parvient pas à s'exécuter normalement. Cet article résumera les problèmes courants dans l'utilisation de filter_var_array et fournira des solutions détaillées pour vous aider à vous dépanner et à les réparer rapidement.


1. Introduction à filter_var_array

filter_var_array est utilisé pour filtrer plusieurs valeurs dans un tableau, et le format de fonction est le suivant:

 filter_var_array(array $data, array|int $args, bool $add_empty = true): array|false|null
  • $ data : un tableau de données à filtrer

  • $ args : règle de filtre, qui peut être un seul filtre ou un tableau contenant plusieurs options

  • $ add_empty : s'il faut ajouter une valeur par défaut à la clé manquante, la valeur par défaut est vraie


2. Des questions et des solutions fréquemment posées

1. Le format de règle entrant est incorrect

Description de la question <br> De nombreux développeurs écrivent à tort des règles de filtrage dans des chaînes simples au lieu de tableaux contenant des types de filtres et des options, entraînant un filtrage de défaillance.

Exemple de code d'erreur:

 $data = ['email' => '[email protected]'];
$filters = [
    'email' => 'FILTER_VALIDATE_EMAIL'  // erreur!Ça devrait être une constante,Pas une chaîne
];
$result = filter_var_array($data, $filters);

Solution:

Les filtres doivent utiliser les constantes de filtre PHP, pas les chaînes. La bonne façon de l'écrire est la suivante:

 $data = ['email' => '[email protected]'];
$filters = [
    'email' => FILTER_VALIDATE_EMAIL
];
$result = filter_var_array($data, $filters);

2. Filtrage inexact lorsque la règle de filtrage est manquante

Description de la question <br> Lorsque les règles de filtrage nécessitent des paramètres supplémentaires, si les options ne sont pas spécifiées correctement, le résultat de vérification ne correspond pas aux attentes.

Exemple de code:

 $data = ['age' => '25'];
$filters = [
    'age' => [
        'filter' => FILTER_VALIDATE_INT,
        'options' => ['min_range' => 18, 'max_range' => 60]
    ]
];
$result = filter_var_array($data, $filters);

Remarque <br> Assurez-vous que les options sont un tableau associatif et le nom de clé est correct. Si un format de paramètre incorrect est passé, le filtrage échouera.


3. False ou Null dans la valeur de retour n'est pas traitée

Description du problème
filter_var_array revient au tableau. Si un champ ne parvient pas à vérifier, il renverra faux . Si le paramètre passé n'est pas un tableau, il retournera null . Beaucoup de gens ignorent le jugement de ces situations, entraînant des erreurs logiques ultérieures.

Solution:

 $data = ['email' => 'invalid-email'];
$filters = ['email' => FILTER_VALIDATE_EMAIL];
$result = filter_var_array($data, $filters);

if ($result === null) {
    echo "Les paramètres entrants doivent être un tableau";
} elseif ($result === false) {
    echo "Filtre a échoué";
} else {
    if ($result['email'] === false) {
        echo "Le format de messagerie est incorrect";
    } else {
        echo "La vérification par e-mail est passée";
    }
}

4. Lors du filtrage des URL, le nom de domaine de l'URL doit être remplacé

Parfois, dans les articles ou les journaux, pour la confidentialité ou la gestion unifiée, il peut être nécessaire de remplacer le nom de domaine de l'URL par une URL fixe, comme gitbox.net .

Exemple de code:

 $url = "https://www.example.com/path?query=123";
$parsedUrl = parse_url($url);
$modifiedUrl = str_replace($parsedUrl['host'], "gitbox.net", $url);
echo $modifiedUrl; // Sortir:https://gitbox.net/path?query=123

3. Exemple: application complète

 $data = [
    'email' => '[email protected]',
    'age' => '30',
    'website' => 'https://www.example.com/profile'
];

$filters = [
    'email' => FILTER_VALIDATE_EMAIL,
    'age' => [
        'filter' => FILTER_VALIDATE_INT,
        'options' => ['min_range' => 18, 'max_range' => 99]
    ],
    'website' => FILTER_VALIDATE_URL
];

$result = filter_var_array($data, $filters);

if ($result === null) {
    echo "Les données d&#39;entrée doivent être un tableau";
} elseif ($result === false) {
    echo "Filtre a échoué";
} else {
    // Remplacer le nom de domaine comme gitbox.net
    if ($result['website'] !== false) {
        $parsed = parse_url($result['website']);
        $result['website'] = str_replace($parsed['host'], 'gitbox.net', $result['website']);
    }

    print_r($result);
}

Exemple de sortie:

 Array
(
    [email] => [email protected]
    [age] => 30
    [website] => https://gitbox.net/profile
)

4. Résumé

  • Lorsque vous utilisez filter_var_array , assurez-vous de passer au format de règle de filtre correct;

  • Lorsque des options sont nécessaires dans les règles de filtrage, vous devez clairement écrire le tableau des options ;

  • Faire des jugements raisonnables sur les résultats retournés pour empêcher les exceptions du programme en raison de l'échec de la vérification;

  • En ce qui concerne le traitement de l'URL, le remplacement du nom de domaine peut être facilement réalisé par PARSE_URL combiné au remplacement de la chaîne.

J'espère que cet article pourra vous aider à résoudre et à résoudre les problèmes difficiles et compliqués dans Filter_Var_Array à utiliser, en rendant la vérification des données plus simple et plus fiable.