The above example raises other questions such as how one would validate an html array. In the input form each input tag that refers to an html array would be named for example testarray[]. However, after the form is submitted, the syntax for validating the values is different from the expected $_POST['testarray[]']. Instead one has to drop the braces and validate as follows, assuming that testarray[] is supposed to be an html array of numerical values:
Valid test:
echo '*';
echo filter_input(
INPUT_POST,
'testarray',
FILTER_VALIDATE_INT,
FILTER_REQUIRE_ARRAY
);
echo '*';
But the following is an invalid test that results in 2 consequtive asterisks only!
echo '*';
echo filter_input(INPUT_POST,
'testarray[]',
FILTER_VALIDATE_INT,
FILTER_REQUIRE_ARRAY
);
echo '*';
So, there is a naming inconsistency going on, as after the form is submitted, one has to forget about the original name of the submitted array by dropping its braces. Maybe when the PECL/Filter extension is reviewed again, the great ones might consider making the syntax a little more forgiving.
filter_input_array
(PHP 5 >= 5.2.0)
filter_input_array — Nimmt mehrere Variablen von Außen entgegen und filtert sie optional
Beschreibung
Diese Funktion ist sinnvoll, um mehrere Werte abzufragen ohne wiederholend filter_input() aufrufen zu müssen.
Parameter-Liste
-
type -
Einer von
INPUT_GET,INPUT_POST,INPUT_COOKIE,INPUT_SERVER,INPUT_ENV,INPUT_SESSIONoderINPUT_REQUEST. -
definition -
Array dass die Argumente enthält. Ein gültiger Key ist ein string der einen Variablennamen enthält und ein gültiger Wert ist entweder ein Filter oder ein array welches den Filter, seine Flags und Optionen spezifiziert. Wenn der Wert ein Array ist, sind gültige Keys filter der den Filtertyp definiert, flags welches jegliche Flags die den Filter spezifizieren enthält und options welches die Optionen enthält to den Filter beschreiben. Für ein besseres Verständnis sehen Sie sich das Beispiel an.
Der Parameter kann auch ein Integer sein der eine Filterkonstante beschreibt. Dann werden alle Werte des Arrays durch diesen Filter gefiltert.
Rückgabewerte
Bei Erfolg wird ein Array zurückgegeben, welches alle Werte der angefragten
Variablen enthält oder FALSE im Fehlerfall. Ein einzelner Array-Wert ist
FALSE, wenn das Filtern fehlgeschlagen ist oder NULL, wenn die Variable
nicht gesetzt ist. Wenn das Flag FILTER_NULL_ON_FAILURE
benutzt wurde, wird FALSE zurückgegeben, wenn die Variable nicht gesetzt ist
und NULL, wenn das Filtern fehlgeschlagen ist.
Beispiele
Beispiel #1 filter_input_array() Beispiel
<?php
error_reporting(E_ALL | E_STRICT);
/* data actually came from POST
$_POST = array(
'product_id' => 'libgd<script>',
'component' => '10',
'versions' => '2.0.33',
'testscalar' => array('2', '23', '10', '12'),
'testarray' => '2',
);
*/
$args = array(
'product_id' => FILTER_SANITIZE_ENCODED,
'component' => array('filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_ARRAY,
'options' => array('min_range' => 1, 'max_range' => 10)
),
'versions' => FILTER_SANITIZE_ENCODED,
'doesnotexist' => FILTER_VALIDATE_INT,
'testscalar' => array(
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_SCALAR,
),
'testarray' => array(
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_ARRAY,
)
);
$myinputs = filter_input_array(INPUT_POST, $args);
var_dump($myinputs);
echo "\n";
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
array(6) {
["product_id"]=>
array(1) {
[0]=>
string(17) "libgd%3Cscript%3E"
}
["component"]=>
array(1) {
[0]=>
int(10)
}
["versions"]=>
array(1) {
[0]=>
string(6) "2.0.33"
}
["doesnotexist"]=>
NULL
["testscalar"]=>
bool(false)
["testarray"]=>
array(1) {
[0]=>
int(2)
}
}
Siehe auch
- filter_input() - Nimmt Variable von Außen entgegen und filtert sie optional
- filter_var_array() - Nimmt mehrere Variablen entgegen und filtert sie optional
filter_input_array
08-Jun-2007 10:02
01-May-2007 07:04
Your example code does not work. According to this page
http://us.php.net/manual/en/ref.filter.php#filter.intro
FILTER_FLAG_SCALAR and FILTER_FLAG_ARRAY dont exist. If you replace them with FILTER_REQUIRE_SCALAR and FILTER_REQUIRE_ARRAY (or FILTER_FORCE_ARRAY if you want to just force it) then your example will execute.
.daRRen.