Для массива нужно очистить данные и сохранить в безопасном виде. Для этого использую код:
<?
$filterTr = array(
'video' => array(
'filter' => FILTER_SANITIZE_STRING,
'flags' => FILTER_REQUIRE_ARRAY
)
);
$filter = filter_input_array(INPUT_POST, $filterTr);
$filter['video']['url'] = filter_var($filter['video']['url'], FILTER_VALIDATE_URL, FILTER_REQUIRE_ARRAY);
$filter['video']['translators'] = filter_var($filter['video']['translators'], FILTER_VALIDATE_FLOAT, FILTER_REQUIRE_ARRAY);
$filter['video']['type'] = filter_var($filter['video']['type'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_REQUIRE_ARRAY);
print "<pre>";
print_r($video);
print "</pre>";
?>
<form method="post">
<input name="video[url][]" type="text" value="test1">
<input name="video[translators][]" type="text" value="test1">
<input name="video[type][]" type="text" value="test1">
<br>
<input name="video[url][]" type="text" value="test2">
<input name="video[translators][]" type="text" value="test2">
<input name="video[type][]" type="text" value="test2">
<br>
<button type="submit">Сохранить</button>
</form>
Возвращает:
Array
(
[url] => Array
(
[0] => test1
[1] => test2
)
[translators] => Array
(
[0] => test1
[1] => test2
)
[type] => Array
(
[0] => test1
[1] => test2
)
)
Для $filter['video']['type'] используется FILTER_SANITIZE_NUMBER_FLOAT. Почему на выводе "test" а не "пусто"? Что делаю не так?