Aktueller Standort: Startseite> Neueste Artikel> Ein Fehler aufgetreten mit filter_var_array? Zusammenfassung von FAQs und detaillierten Lösungen

Ein Fehler aufgetreten mit filter_var_array? Zusammenfassung von FAQs und detaillierten Lösungen

gitbox 2025-06-15

In PHP ist filter_var_array eine sehr praktische Funktion für die Stapelfilterung und Validierung von Daten in Arrays. Es kann mehrere Variablen gleichzeitig verarbeiten und unterschiedliche Filterregeln für jede Variable angeben, die die Datenüberprüfung erheblich erleichtert. Während der tatsächlichen Verwendung stießen jedoch viele Entwickler auf einige häufige Fehler, was dazu führte, dass der Code nicht normal ausgeführt wurde. Dieser Artikel fasst häufig häufige Probleme bei der Verwendung von filter_var_array zusammen und liefert detaillierte Lösungen, mit denen Sie schnell behoben und behoben werden können.


1. Einführung in filter_var_array

filter_var_array wird verwendet, um mehrere Werte in einem Array zu filtern, und das Funktionsformat lautet wie folgt:

 filter_var_array(array $data, array|int $args, bool $add_empty = true): array|false|null
  • $ Daten : Eine Reihe von Daten, die gefiltert werden sollen

  • $ args : Filterregel, die ein einzelner Filter oder ein Array mit mehreren Optionen sein kann

  • $ add_empty : Ob der fehlenden Taste einen Standardwert hinzufügt, ist der Standard wahr.


2. Häufig gestellte Fragen und Lösungen

1. Das eingehende Regelformat ist falsch

Frage Beschreibung <br> Viele Entwickler schreiben fälschlicherweise Filterregeln in einfache Zeichenfolgen anstelle von Arrays, die Filtertypen und -optionen enthalten, was zu einem Filterfehler führt.

Beispielfehlercode:

 $data = ['email' => '[email protected]'];
$filters = [
    'email' => 'FILTER_VALIDATE_EMAIL'  // Fehler!Es sollte eine Konstante sein,Keine Zeichenfolge
];
$result = filter_var_array($data, $filters);

Lösung:

Filter müssen die Filterkonstanten von PHP und keine Zeichenfolgen verwenden. Die richtige Art zu schreiben ist wie folgt:

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

2. ungenaue Filterung, wenn die Filterregel fehlt

Frage Beschreibung <br> Wenn die Filterregeln zusätzliche Parameter erfordern, stimmt das Bestätigungsergebnis nicht mit den Erwartungen überein.

Beispielcode:

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

Hinweis <br> Stellen Sie sicher, dass Optionen ein assoziatives Array sind und der Schlüsselname korrekt ist. Wenn ein falsches Parameterformat übergeben wird, schlägt die Filterung fehl.


3.. Falsch oder Null im Rückgabewert wird nicht verarbeitet

Problembeschreibung
filter_var_array kehrt zum Array zurück. Wenn ein Feld nicht überprüft wird, gibt es false zurück. Wenn der übergebene Parameter kein Array ist, wird NULL zurückgegeben. Viele Menschen ignorieren das Urteil dieser Situationen, was zu nachfolgenden Logikfehlern führt.

Lösung:

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

if ($result === null) {
    echo "Die eingehenden Parameter müssen ein Array sein";
} elseif ($result === false) {
    echo "Filter fehlgeschlagen";
} else {
    if ($result['email'] === false) {
        echo "Das E -Mail -Format ist falsch";
    } else {
        echo "E -Mail -Überprüfung bestanden";
    }
}

4. Beim Filtern von URLs muss der Domänenname der URL ersetzt werden

Manchmal kann in Artikeln oder Protokollen für die Privatsphäre oder ein einheitliches Management den Domänennamen in der URL durch ein festgelegtes, wie z. B. gitbox.net , ersetzt werden.

Beispielcode:

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

3. Beispiel: umfassende Anwendung

 $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 "Die Eingabedaten müssen ein Array sein";
} elseif ($result === false) {
    echo "Filter fehlgeschlagen";
} else {
    // Ersetzen Sie den Domainnamen als gitbox.net
    if ($result['website'] !== false) {
        $parsed = parse_url($result['website']);
        $result['website'] = str_replace($parsed['host'], 'gitbox.net', $result['website']);
    }

    print_r($result);
}

Ausgangsbeispiel:

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

4. Zusammenfassung

  • Wenn Sie Filter_Var_Array verwenden, geben Sie unbedingt im richtigen Filterregelformat weiter.

  • Wenn für die Filterregeln Optionen benötigt werden, müssen Sie das Options -Array klar ausschreiben.

  • Angemessene Beurteilungen über die zurückgegebenen Ergebnisse vornehmen, um die Programmausnahmen aufgrund eines Überprüfungsversagens zu verhindern;

  • Wenn es um die URL -Verarbeitung geht, kann der Ersatz von Domänennamen durch Parse_url in Kombination mit einem String -Austausch leicht erreicht werden.

Ich hoffe, dieser Artikel kann Ihnen helfen, schwierige und komplizierte Probleme bei der Verwendung filter_var_array zu beheben und zu lösen, wodurch die Datenüberprüfung einfacher und zuverlässiger wird.