In PHP sind die Datenfilterung und -überprüfung ein wesentlicher Bestandteil der Verarbeitung von Benutzereingaben. Wir verwenden häufig filter_var () , um einen einzelnen Datenwert zu überprüfen. Wenn wir jedoch eine Reihe von Daten haben, z.
filter_var_array () ist eine Funktion, die von PHP bereitgestellt wird, um mehrere Datenwerte zu filtern , normalerweise ein assoziatives Array, z. B. Daten von $ _get oder $ _post . Diese Funktion kann jedes Feld separat gemäß den von Ihnen definierten Filterregeln verarbeiten.
Der Funktionsprototyp lautet wie folgt:
filter_var_array(array $data, array|int $definition, bool $add_empty = true): array|false|null
$ Daten : Die zu verarbeitenden Array -Daten.
$ Definition : Filterregel, die eine Ganzzahl sein kann (unter Verwendung desselben Filters für alle Felder) oder ein Array (Definieren verschiedener Filter für verschiedene Felder).
$ add_empty : Ob in das Ergebnis keine Matching -Schlüssel einbezogen werden soll, standardmäßig true .
Angenommen, Sie haben ein Benutzeranmeldesformular mit Mailbox- und Altersfeldern. Sie möchten die Mailbox, die ganzzahlige Überprüfung des Alters, überprüfen und den Bereich einschränken. Verwenden Sie filter_var_array () , um wie folgt zu verarbeiten:
$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);
print_r($result);
Die Ausgabe kann sein:
Array
(
[email] => [email protected]
[age] => 25
)
Wenn die Überprüfung fehlschlägt, wird der entsprechende Wert falsch .
filter_var_array () eignet sich besonders für die Verarbeitungsformulardaten, da Sie klare Validierungsregeln und Stapelverarbeitung definieren können.
$_POST = [
'username' => 'jack',
'email' => '[email protected]',
'age' => '17'
];
$rules = [
'username' => [
'filter' => FILTER_SANITIZE_STRING,
'flags' => FILTER_FLAG_NO_ENCODE_QUOTES
],
'email' => FILTER_VALIDATE_EMAIL,
'age' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 18]
]
];
$cleanData = filter_var_array($_POST, $rules);
print_r($cleanData);
In diesem Beispiel ist das zurückgekehrte Alter falsch , wenn das Alter weniger als 18 liegt, und veranlasst uns, dass die Überprüfung fehlgeschlagen ist.
Sie können den Standardwert über filter_default und benutzerdefinierte Optionen festlegen und auch eine aussagekräftige Ausgabe erhalten, wenn Felder fehlen.
$data = [
'email' => 'wrong-format',
// 'age' => missing
];
$rules = [
'email' => FILTER_VALIDATE_EMAIL,
'age' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['default' => 18]
]
];
$result = filter_var_array($data, $rules);
print_r($result);
Ausgabe:
Array
(
[email] => false
[age] => 18
)
Wenn Sie Daten erhalten, die von APIs von Drittanbietern übermittelt wurden, können Sie mit Filter_var_Array () die Datensicherheit schnell sicherstellen.
$json = file_get_contents('https://api.gitbox.net/user/input');
$input = json_decode($json, true);
$filters = [
'email' => FILTER_VALIDATE_EMAIL,
'subscription' => FILTER_VALIDATE_BOOLEAN
];
$validated = filter_var_array($input, $filters);
Wenn die eingehenden $ -Daten kein Array sind, gibt Filter_var_array () false zurück.
Wenn einige Schlüsseln nicht in $ Definition sind, $ add_Empty auf true festgelegt ist, werden sie immer noch im Rückgabeergebnis mit einem Wert von NULL angezeigt.
Für die Verwendung von Filtern vom Typ filter_sanitize_* ist Vorsicht erforderlich, bei denen es sich um Reinigungsdaten handelt, anstatt Daten zu überprüfen.
filter_var_array () ist ein sehr leistungsstarkes Tool, das uns helfen kann, die Überprüfung und Reinigung einer Datenmenge zu stapeln, wodurch der Code prägnanter und wartbarer wird. Es kann in Verarbeitungsformulardaten, API-Anfragen oder in jedem Szenario, das eine Mehrfeldüberprüfung erfordert, leuchten.
Lernen Sie, filter_var_array () vernünftigerweise zu verwenden, und Sie können die Sicherheit und Effizienz der Datenverarbeitung in PHP -Projekten erheblich verbessern.