filter_var_array în PHP

Validează mai multe valori dintr-un tablou deodată, fiecare cu filtrul ei, de exemplu toate câmpurile unui formular.

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

Ce face filter_var_array

filter_var_array aplică filter_var pe mai multe chei. Al doilea parametru este o „schemă”: pentru fiecare cheie, un filtru (FILTER_VALIDATE_EMAIL) sau un tablou cu filter, options și flags. Dacă dai un singur filtru, se aplică tuturor valorilor.

Rezultatul conține doar cheile din schemă. Valorile invalide devin false, iar cheile care lipsesc din date devin null (sau sunt omise, cu $add_empty = false). Pentru o cheie care trebuie să fie tablou, folosește FILTER_REQUIRE_ARRAY.

Parametri

Parametru Descriere
$array Datele de validat, de exemplu $_POST.
$options Schema de filtre pe chei, sau un singur filtru pentru toate valorile.
$add_empty Opțional. false nu adaugă în rezultat cheile lipsă.

Ce returnează

Tabloul cu valorile filtrate, sau false la eroare.

Exemple

Exemplul 1: Validarea unui formular de înscriere

<?php
$date = ["email" => "ana@exemplu.ro", "varsta" => "17", "site" => "dexblog", "tag" => ["php", "12"]];

$rezultat = filter_var_array($date, [
    "email" => FILTER_VALIDATE_EMAIL,
    "varsta" => ["filter" => FILTER_VALIDATE_INT, "options" => ["min_range" => 18]],
    "site" => FILTER_VALIDATE_URL,
    "telefon" => FILTER_DEFAULT,
    "tag" => ["filter" => FILTER_VALIDATE_INT, "flags" => FILTER_REQUIRE_ARRAY],
]);

var_dump($rezultat);

Rezultat

array(5) {
  ["email"]=>
  string(14) "ana@exemplu.ro"
  ["varsta"]=>
  bool(false)
  ["site"]=>
  bool(false)
  ["telefon"]=>
  NULL
  ["tag"]=>
  array(2) {
    [0]=>
    bool(false)
    [1]=>
    int(12)
  }
}

Exemplul 2: Același filtru pentru toate valorile

<?php
var_dump(filter_var_array(["cantitate" => "3", "pret" => "x"], FILTER_VALIDATE_INT));

Rezultat

array(2) {
  ["cantitate"]=>
  int(3)
  ["pret"]=>
  bool(false)
}

Greșeli frecvente

  • Te aștepți să regăsești în rezultat toate câmpurile din formular. Apar doar cheile din schemă; restul sunt eliminate, ceea ce e de fapt o protecție.

Comenzi înrudite

  • filter_var: Validează sau curăță o valoare: email, număr întreg, URL, adresă IP, valoare booleană.
  • filter_input_array: Citește și validează deodată mai mulți parametri din cererea HTTP (GET, POST, cookie), după o schemă de filtre.
  • filter_input / filter_has_var: Citește o valoare direct din cererea HTTP (GET, POST, cookie) și o validează, într-un singur pas.