Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

PHP filter_var_array(): Mehrere Werte gleichzeitig validieren und filtern

Sie befinden sich: Home > Php Tutorial > PHP filter_var_array(): Meh...

PHP filter_var_array(): Mehrere Werte gleichzeitig validieren und filtern


Eintrag am:  05.04.2026
Hits / Besucher:  42
Sprache:  Deutsch
Kategorie:  Fortgeschrittene Tut...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Bei der Verarbeitung von Formulardaten in PHP müssen oft mehrere Eingabefelder gleichzeitig geprüft werden. Die Funktion filter_var_array() ermöglicht es, ein komplettes Array mit unterschiedlichen Filterregeln in einem einzigen Aufruf zu validieren und zu bereinigen. Statt jeden Wert einzeln mit filter_var() zu prüfen, definiert der Entwickler ein Regel-Array, das jedem Schlüssel einen passenden Filter zuordnet. Dieses Tutorial erklärt die Syntax, zeigt die wichtigsten Filter-Konstanten und demonstriert den Einsatz anhand praxisnaher Beispiele.

Illustration zum Tutorial: PHP filter_var_array(): Mehrere Werte gleichzeitig validieren und filtern

Schauen wir uns zuerst die Funktionsweise und die Signatur von filter_var_array() an.

Was macht filter_var_array()?

Die Funktion nimmt ein assoziatives Array mit Eingabedaten entgegen und wendet auf jeden Wert einen definierten Filter an. Das Ergebnis ist ein neues Array mit den gefilterten Werten.

<?php

filter_var_array(array $data, array|int $options = FILTER_DEFAULT, bool $add_empty = true): array|false|null

Der erste Parameter $data ist das zu filternde Array. Der zweite Parameter $options enthält entweder einen einzelnen Filter, der auf alle Werte angewendet wird, oder ein assoziatives Array mit individuellen Filterregeln pro Schlüssel. Der optionale dritte Parameter $add_empty bestimmt, ob fehlende Schlüssel als null im Ergebnis erscheinen sollen. Besteht ein Wert die Validierung nicht, gibt die Funktion für diesen Schlüssel false zurück. Fehlt ein Schlüssel im Eingabe-Array, wird er mit null belegt.

filter_var_array() vs. filter_var()

Beide Funktionen nutzen dieselben Filter-Konstanten, unterscheiden sich jedoch im Anwendungsbereich. Während filter_var() einen einzelnen Wert prüft, verarbeitet filter_var_array() ein komplettes Array in einem Schritt.

<?php

/* Einzeln mit filter_var() */
$email = filter_var('test@example.com', FILTER_VALIDATE_EMAIL);
$alter = filter_var('25', FILTER_VALIDATE_INT);

/* Gebündelt mit filter_var_array() */
$daten = [
'email' => 'test@example.com',
'alter' => '25'
];

$filter = [
'email' => FILTER_VALIDATE_EMAIL,
'alter' => FILTER_VALIDATE_INT
];

$ergebnis = filter_var_array($daten, $filter);
print_r($ergebnis);
/*
Array
(
[email] => test@example.com
[alter] => 25
)
*/

Bei wenigen Werten ist filter_var() völlig ausreichend. Sobald jedoch drei oder mehr Felder geprüft werden müssen, sorgt filter_var_array() für übersichtlicheren und besser wartbaren Code.

Die wichtigsten Validierungs-Filter

PHP stellt eine Reihe vordefinierter Konstanten bereit, mit denen sich gängige Datenformate validieren lassen. Die folgende Übersicht zeigt die am häufigsten verwendeten Filter.

flowchart LR
    A["Eingabe-Array"] --> B["filter_var_array()"]
    B --> C{"Ergebnis pro Feld"}
    C -->|"bestanden"| D["bereinigter Wert"]
    C -->|"nicht bestanden"| E["false"]
    C -->|"Feld fehlt"| F["null"]

FILTER_VALIDATE_EMAIL und FILTER_VALIDATE_URL

Diese beiden Filter prüfen, ob ein Wert eine syntaktisch korrekte E-Mail-Adresse beziehungsweise eine gültige URL enthält.

<?php

$daten = [
'email' => 'max@beispiel.de',
'webseite' => 'https://example.com',
'falsche_email' => 'keine-email',
'falsche_url' => 'nicht-gueltig'
];

$filter = [
'email' => FILTER_VALIDATE_EMAIL,
'webseite' => FILTER_VALIDATE_URL,
'falsche_email' => FILTER_VALIDATE_EMAIL,
'falsche_url' => FILTER_VALIDATE_URL
];

$ergebnis = filter_var_array($daten, $filter);
print_r($ergebnis);
/*
Array
(
[email] => max@beispiel.de
[webseite] => https://example.com
[falsche_email] =>
[falsche_url] =>
)
*/

Gültige Werte werden unverändert zurückgegeben. Bei ungültigen Werten gibt der Filter false zurück. So lässt sich anschließend einfach prüfen, welche Felder die Validierung nicht bestanden haben.

FILTER_VALIDATE_INT mit Optionen

Der Integer-Filter unterstützt zusätzliche Optionen wie min_range und max_range, um den erlaubten Wertebereich einzuschränken.

<?php

$daten = [
'alter' => '25',
'menge' => '150',
'ungueltig' => 'abc'
];

$filter = [
'alter' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 1, 'max_range' => 120]
],
'menge' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 1, 'max_range' => 100]
],
'ungueltig' => FILTER_VALIDATE_INT
];

$ergebnis = filter_var_array($daten, $filter);
print_r($ergebnis);
/*
Array
(
[alter] => 25
[menge] =>
[ungueltig] =>
)
*/
/* $ergebnis['menge'] ist false, da 150 > 100 */
/* $ergebnis['ungueltig'] ist false, da 'abc' kein Integer ist */

Der Wert 150 überschreitet den festgelegten Maximalwert von 100 und wird daher als ungültig eingestuft. Die Kombination aus Filter-Konstante und Options-Array bietet eine präzise Kontrolle über die erlaubten Wertebereiche.

Sanitize-Filter zum Bereinigen von Eingaben

Während Validierungs-Filter prüfen, ob ein Wert einem bestimmten Format entspricht, verändern Sanitize-Filter den Wert aktiv und entfernen unerwünschte Zeichen.

<?php

$daten = [
'name' => '<b>Max</b> Mustermann',
'telefon' => '+49 (0) 123-456',
'kommentar' => 'Hallo <script>alert("XSS")</script>'
];

$filter = [
'name' => FILTER_SANITIZE_SPECIAL_CHARS,
'telefon' => FILTER_SANITIZE_NUMBER_INT,
'kommentar' => FILTER_SANITIZE_SPECIAL_CHARS
];

$sauber = filter_var_array($daten, $filter);
print_r($sauber);
/*
Array
(
[name] => &lt;b&gt;Max&lt;/b&gt; Mustermann
[telefon] => +490123-456
[kommentar] => Hallo &lt;script&gt;alert(&#34;XSS&#34;)&lt;/script&gt;
)
*/

FILTER_SANITIZE_SPECIAL_CHARS wandelt Sonderzeichen in HTML-Entities um und schützt so vor Cross-Site-Scripting. FILTER_SANITIZE_NUMBER_INT entfernt alle Zeichen außer Ziffern, Plus und Minus. Der ehemals verfügbare Filter FILTER_SANITIZE_STRING ist seit PHP 8.1 als veraltet markiert und sollte nicht mehr verwendet werden. Stattdessen eignet sich FILTER_SANITIZE_SPECIAL_CHARS als Alternative.

Praxisbeispiel: Kontaktformular validieren

Ein typischer Anwendungsfall ist die Validierung eines Kontaktformulars, bei dem Name, E-Mail-Adresse und Nachricht gleichzeitig geprüft werden.

<?php

$eingaben = [
'name' => $_POST['name'] ?? '',
'email' => $_POST['email'] ?? '',
'alter' => $_POST['alter'] ?? '',
'nachricht' => $_POST['nachricht'] ?? ''
];

$filter = [
'name' => [
'filter' => FILTER_SANITIZE_SPECIAL_CHARS,
'flags' => FILTER_FLAG_STRIP_LOW
],
'email' => FILTER_VALIDATE_EMAIL,
'alter' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 18, 'max_range' => 120]
],
'nachricht' => FILTER_SANITIZE_SPECIAL_CHARS
];

$sauber = filter_var_array($eingaben, $filter);

$fehler = [];
if ($sauber['email'] === false) {
$fehler[] = 'Bitte eine gültige E-Mail-Adresse eingeben.';
}
if ($sauber['alter'] === false) {
$fehler[] = 'Bitte ein gültiges Alter zwischen 18 und 120 angeben.';
}
if (empty($sauber['name'])) {
$fehler[] = 'Bitte einen Namen eingeben.';
}

if (count($fehler) > 0) {
foreach ($fehler as $meldung) {
echo $meldung . "\n";
}
} else {
echo 'Alle Eingaben sind gültig.';
}

Dieses Muster trennt die Filterlogik sauber von der Fehlerbehandlung. Zuerst werden alle Werte gefiltert, danach wird das Ergebnis-Array auf false-Werte geprüft. So entsteht ein übersichtlicher Validierungsablauf, der sich bei zusätzlichen Feldern einfach erweitern lässt.

Erweiterte Optionen und FILTER_CALLBACK

Neben den vordefinierten Filtern bietet filter_var_array() die Möglichkeit, eigene Filterfunktionen über FILTER_CALLBACK einzubinden.

<?php

$daten = [
'benutzername' => ' Max Mustermann ',
'plz' => ' 80331 '
];

$filter = [
'benutzername' => [
'filter' => FILTER_CALLBACK,
'options' => function($wert) {
$getrimmt = trim($wert);
if (strlen($getrimmt) < 2) {
return false;
}
return $getrimmt;
}
],
'plz' => [
'filter' => FILTER_CALLBACK,
'options' => function($wert) {
$bereinigt = trim($wert);
if (preg_match('/^\d{5}$/', $bereinigt)) {
return $bereinigt;
}
return false;
}
]
];

$ergebnis = filter_var_array($daten, $filter);
print_r($ergebnis);
/*
Array
(
[benutzername] => Max Mustermann
[plz] => 80331
)
*/

Die Callback-Funktion erhält den Rohwert und gibt entweder den bereinigten Wert oder false zurück. So lassen sich beliebig komplexe Validierungsregeln umsetzen, die über die Möglichkeiten der eingebauten Filter hinausgehen. Eigene Prüfungen für Postleitzahlen, Telefonnummern oder benutzerdefinierte Formate werden damit problemlos realisierbar.

Fazit

Die Funktion filter_var_array() ist ein effizientes Werkzeug zur gleichzeitigen Validierung und Bereinigung mehrerer Eingabewerte in PHP. Sie kombiniert Validierungs-Filter wie FILTER_VALIDATE_EMAIL, FILTER_VALIDATE_INT und FILTER_VALIDATE_URL mit Sanitize-Filtern wie FILTER_SANITIZE_SPECIAL_CHARS in einem einzigen Funktionsaufruf. Werte, die die Validierung nicht bestehen, werden mit false markiert, fehlende Schlüssel mit null. Durch die erweiterten Optionen wie min_range und max_range sowie FILTER_CALLBACK lassen sich auch individuelle Filterregeln definieren. Gegenüber der Einzelvalidierung mit filter_var() bietet filter_var_array() bei mehreren Feldern eine deutlich kompaktere und besser wartbare Lösung, die sich besonders für die Formularvalidierung eignet.

 


Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.