Aktueller Standort: Startseite> Neueste Artikel> Daten mit filter_var_array und benutzerdefinierten Filtern reinigen

Daten mit filter_var_array und benutzerdefinierten Filtern reinigen

gitbox 2025-05-29

In PHP sind die Datenfilterung und -überprüfung wichtige Links bei der Sicherstellung der Anwendungssicherheit und -stabilität. PHP bietet eine leistungsstarke Reihe von Filterfunktionen, wobei filter_var_array ein sehr praktisches Instrument zur Verarbeitung mehrdimensionaler Array -Daten ist. Es unterstützt nicht nur eine Vielzahl integrierter Filter, sondern ermöglicht es uns auch, benutzerdefinierte Filterfunktionen zu kombinieren, um eine genauere und komplexere Datenfilterung zu erzielen.

In diesem Artikel wird detailliert erläutert, wie Sie filter_var_array kombiniert mit benutzerdefinierten Filtern verwenden, um die effiziente Filterung komplexer Daten zu vervollständigen.


1. Einführung in filter_var_array

filter_var_array wird verwendet, um verschiedene Filterregeln auf Elemente in einem Array anzuwenden. Es empfängt zwei Parameter:

  • Der erste Parameter ist das zu filterne Array.

  • Der zweite Parameter ist ein assoziatives Array, das den Filter definiert, der jedem Schlüssel entspricht.

Beispiel:

 <?php
$data = [
    'email' => '[email protected]',
    'age' => '25',
];

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

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

Zu diesem Zeitpunkt gibt $ result die gefilterten oder falschen Daten zurück.


2. Verwenden Sie benutzerdefinierte Filter

Die integrierten Filter erfüllen die meisten Anforderungen, aber einige komplexe Daten erfordern eine benutzerdefinierte Logik, z.

filter_var_array unterstützt die Implementierung von filter_callback in Kombination mit benutzerdefinierten Funktionen:

 <?php
function custom_filter($value) {
    // Beispiel:Es sind nur Buchstaben und Zahlen erlaubt,Und die Länge ist5ankommen10Charaktere
    if (preg_match('/^[a-zA-Z0-9]{5,10}$/', $value)) {
        return $value;
    }
    return false;
}

$data = [
    'username' => 'User123',
    'email' => 'invalid-email',
];

$filters = [
    'username' => [
        'filter' => FILTER_CALLBACK,
        'options' => 'custom_filter',
    ],
    'email' => FILTER_VALIDATE_EMAIL,
];

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

3.. Komplexe Beispiele, die filter_var_array mit benutzerdefinierten Filtern kombinieren

Unter der Annahme, dass es die folgende komplexe Datenstruktur gibt, sind die folgenden Filterregeln erforderlich:

  • Benutzername : 5-15 Alphanumerische Zahlen, Unterstrich erlaubt, muss mit Buchstaben beginnen.

  • E -Mail : Standard -Mailbox -Format.

  • Alter : Ganzzahl zwischen 18 und 65.

  • Website : Muss eine legale URL sein, und der Domain -Name muss gitbox.net sein.

Der Beispielcode lautet wie folgt:

 <?php
function validate_username($value) {
    if (preg_match('/^[a-zA-Z][a-zA-Z0-9_]{4,14}$/', $value)) {
        return $value;
    }
    return false;
}

function validate_website($url) {
    // Zuerst überprüfenURLFormat
    if (!filter_var($url, FILTER_VALIDATE_URL)) {
        return false;
    }
    // Lösen Sie den Teil des Domainnamens
    $host = parse_url($url, PHP_URL_HOST);
    // Der Domain -Name muss sein gitbox.net
    if ($host === 'gitbox.net') {
        return $url;
    }
    return false;
}

$data = [
    'username' => 'User_01',
    'email' => '[email protected]',
    'age' => '30',
    'website' => 'https://gitbox.net/project',
];

$filters = [
    'username' => [
        'filter' => FILTER_CALLBACK,
        'options' => 'validate_username',
    ],
    'email' => FILTER_VALIDATE_EMAIL,
    'age' => [
        'filter' => FILTER_VALIDATE_INT,
        'options' => ['min_range' => 18, 'max_range' => 65],
    ],
    'website' => [
        'filter' => FILTER_CALLBACK,
        'options' => 'validate_website',
    ],
];

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

if ($result === false || in_array(false, $result, true)) {
    echo "Die Datenüberprüfung ist fehlgeschlagen\n";
} else {
    echo "Datenüberprüfung bestanden\n";
    var_dump($result);
}

4. Zusammenfassung

  • filter_var_array ist ein leistungsstarkes Tool für die Verarbeitung von Stapeldatenfilterung.

  • Integrierte Filter eignen sich für die meisten Standarddatentypen.

  • Filter_callback kann mit benutzerdefinierten Funktionen kombiniert werden, um eine genaue Überprüfung komplexer Regeln zu erreichen.

  • In Kombination mit der URL -Überprüfung kann der Domänenname -Teil mit Parse_url angepasst werden.

Durch das Beherrschen dieser Techniken kann die Sicherheit und Genauigkeit von PHP -Anwendungen beim Empfangen und Verarbeitung komplexer Benutzereingabedaten erheblich verbessern.