Web студия "GrandView"
  Главная   Написать Контакты
   
   
О проекте
Руководство php
 

filter_input_array

(no version information, might be only in CVS)

filter_input_array -- Gets multiple variables from outside PHP and optionally filters them

Описание

mixed filter_input_array ( int type [, mixed definition] )

This function is useful for retrieving many values without repetitively calling filter_input().

Список параметров

type

One of INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV, INPUT_SESSION, or INPUT_REQUEST.

definition

An array defining the arguments. A valid key is a string containing a variable name and a valid value is either a filter type, or an array optionally specifying the filter, flags and options. If the value is an array, valid keys are filter which specifies the filter type, flags which specifies any flags that apply to the filter, and options which specifies any options that apply to the filter. See the example below for a better understanding.

This parameter can be also an integer holding a filter constant. Then all values in the input array are filtered by this filter.

Возвращаемые значения

An array containing the values of the requested variables on success, or FALSE on failure. An array value will be FALSE if the filter fails, or NULL if the variable is not set. Or if the flag FILTER_NULL_ON_FAILURE is used, it returns FALSE if the variable is not set and NULL if the filter fails.

Примеры

Пример 1. A filter_input_array() example

<?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_FLAG_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_FLAG_SCALAR,
                           ),
   
'testarray'    => array(
                           
'filter' => FILTER_VALIDATE_INT,
                           
'flags'  => FILTER_FLAG_ARRAY,
                           )

);

$myinputs = filter_input_array(INPUT_POST, $args);

var_dump($myinputs);
echo
"\n";
?>

Результат выполнения данного примера:

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)
  }
}

Смотрите также

filter_input()
filter_var_array()



filter_input> <filter_id
Last updated: Sat, 27 Jan 2007
 
add a note add a note User Contributed Notes
filter_input_array
phpnotes dot 20 dot zsh at spamgourmet dot com
10-Sep-2007 10:32
The above example will actually output "NULL" because of the undefined variable doesnotexist - see http://bugs.php.net/bug.php?id=42608.
Sinured
22-Aug-2007 10:10
extract() is a very convenient way of copying all those variables to the local scope. (see http://www.php.net/extract)
iam4webwork at NOSPAM dot hotmail dot com
08-Jun-2007 01:02
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.
Darren Craine
01-May-2007 10: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.

filter_input> <filter_id
Last updated: Sat, 27 Jan 2007
 
 
Новости
11 июля 2007
Сайт запущен
© 2007 info@grandviewstudio.com

Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/sites/grandviewstudiocom/www/65f67d67a94ad980786580ae69e11c07/sape.php on line 324

Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/sites/grandviewstudiocom/www/65f67d67a94ad980786580ae69e11c07/sape.php on line 330
Z058440144362 Z348613067571