PHP.mk документација

filter_var_array

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.filter-var-array.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.filter-var-array.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
filter_var_array

Референца за `function.filter-var-array.php` со подобрена типографија и навигација.

function.filter-var-array.php

filter_var_array

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

filter_var_arrayЗема повеќе променливи и опционално ги филтрира

= NULL

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

Филтрирај асоцијативно array на вредности користејќи FILTER_VALIDATE_* филтри за валидација, FILTER_SANITIZE_* филтри за чистење, или сопствени филтри.

Параметри

array

Асоцијативен array што ги содржи податоците за филтрирање.

options

Асоцијативна array на опции, или филтерот што треба да се примени на секој запис, што може да биде или филтер за валидација со користење на една од FILTER_VALIDATE_* константите, или филтер за чистење со користење на една од FILTER_SANITIZE_* constants.

The option array is an associative array where the key corresponds to a key in the input array and the associated value is either the filter to apply to this entry, or an associative array describing how and which filter should be applied to this entry.

Асоцијативната низа што опишува како се применува филтерот мора да ја содржи 'filter' клучот чија поврзана вредност е филтерот што треба да се примени, што може да биде една од FILTER_VALIDATE_*, FILTER_SANITIZE_*, FILTER_UNSAFE_RAW, или FILTER_CALLBACK константите. Може опционално да ја содржи 'flags' key which specifies any flags that apply to the filter, and the 'options' клучот што специфицира какви било опции што се применуваат на филтерот.

add_empty

Додај недостасувачки клучеви како null во вратената вредност.

Вратени вредности

На успех, еден array што ги содржи вредностите на бараните променливи.

При неуспех, false се враќа.

Missing entries from the input array are added to the returned array as null if add_empty is true, and are omitted entirely if it is false.

Запис од вратената array сокети, и го специфицира далечинскиот порт од кој се примаат податоците. Ако сокетот е поврзан-ориентиран, false ако филтерот не успее, освен ако FILTER_NULL_ON_FAILURE знамето се користи, во тој случај ќе биде null. With the FILTER_FORCE_ARRAY flag, that failure value is wrapped in a one element array like any other result.

Примери

ако е овозможен колекторот за отпадоци, filter_var_array() example

Entries are filtered as scalars unless FILTER_REQUIRE_ARRAY or FILTER_FORCE_ARRAY is used. The FILTER_REQUIRE_SCALAR flag on testscalar below therefore only states that default explicitly.

<?php

$data = [
    'product_id' => 'libgd<script>',
    'component'  => '10',
    'versions'   => '2.0.33',
    'testscalar' => ['2', '23', '10', '12'],
    'testarray'  => '2',
];

$filters = [
    'product_id'   => FILTER_SANITIZE_ENCODED,
    'component'    => [
        'filter'   => FILTER_VALIDATE_INT,
        'flags'    => FILTER_FORCE_ARRAY,
        'options'  => [
            'min_range' => 1,
            'max_range' => 10,
        ],
    ],
    'versions'     => [
        'filter' => FILTER_SANITIZE_ENCODED
    ],
    'testscalar'   => [
        'filter' => FILTER_VALIDATE_INT,
        'flags'  => FILTER_REQUIRE_SCALAR,
    ],
    'testarray'    => [
        'filter' => FILTER_VALIDATE_INT,
        'flags'  => FILTER_FORCE_ARRAY,
    ],
    'doesnotexist' => FILTER_VALIDATE_INT,
];

var_dump(filter_var_array($data, $filters));

?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

array(6) {
  ["product_id"]=>
  string(17) "libgd%3Cscript%3E"
  ["component"]=>
  array(1) {
    [0]=>
    int(10)
  }
  ["versions"]=>
  string(6) "2.0.33"
  ["testscalar"]=>
  bool(false)
  ["testarray"]=>
  array(1) {
    [0]=>
    int(2)
  }
  ["doesnotexist"]=>
  NULL
}

Example #2 Applying a single filter to all values

Кога options е int, the same filter is applied to every entry in the array.

<?php
$data = [
    'name'  => '<b>John</b>',
    'email' => 'john@example<script>.com',
    'bio'   => 'Developer & writer',
];

var_dump(filter_var_array($data, FILTER_SANITIZE_SPECIAL_CHARS));
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

array(3) {
  ["name"]=>
  string(27) "&#60;b&#62;John&#60;/b&#62;"
  ["email"]=>
  string(32) "john@example&#60;script&#62;.com"
  ["bio"]=>
  string(22) "Developer &#38; writer"
}

енџинот: FILTER_CALLBACK

<?php
$data = [
    'name'  => '  John Doe  ',
    'city'  => '  New York  ',
];

$options = [
    'name' => [
        'filter'  => FILTER_CALLBACK,
        'options' => 'trim',
    ],
    'city' => [
        'filter'  => FILTER_CALLBACK,
        'options' => function ($value) {
            return strtoupper(trim($value));
        },
    ],
];

var_dump(filter_var_array($data, $options));
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

array(2) {
  ["name"]=>
  string(8) "John Doe"
  ["city"]=>
  string(8) "NEW YORK"
}

Види Исто така

  • filter_input_array() - Добива надворешни променливи и опционално ги филтрира
  • filter_var() - Провери за нумерички карактер(и)
  • filter_input() - Добива специфична надворешна променлива по име и опционално ја филтрира
  • Филтри за валидација FILTER_VALIDATE_*
  • Филтри за чистење FILTER_SANITIZE_*

Белешки од корисници 5 белешки

Анонимен
3 години пред
To apply the same filter to many params/keys, use array_fill_keys().

<?php
$data = array(
    'product_id'    => 'libgd<script>',
    'component'     => '    10    ',
    'versions'      => '2.0.33',
    'testscalar'    => array('2', '23', '10', '12'),
    'testarray'     => '2',
);
$keys = array(
    'product_id',
    'component',
    'versions',
    'doesnotexist',
    'testscalar',
    'testarray'
);
$options = array(
    'filter' => FILTER_CALLBACK,
    'options' => function ($value) {
        return trim(strip_tags($value));
    },
);
$args = array_fill_keys($keys, $options);
/* Result
$args = array(
    'product_id' => array(
        'filter' => FILTER_CALLBACK,
        'options' => function ($value) {
            return trim(strip_tags($value));
        },
    ),
    'component' => array(
        'filter' => FILTER_CALLBACK,
        'options' => function ($value) {
            return trim(strip_tags($value));
        },
    ),
    'versions' => array(
        'filter' => FILTER_CALLBACK,
        'options' => function ($value) {
            return trim(strip_tags($value));
        },
    ),
    'doesnotexist' => array(
        'filter' => FILTER_CALLBACK,
        'options' => function ($value) {
            return trim(strip_tags($value));
        },
    ),
    'testscalar' => array(
        'filter' => FILTER_CALLBACK,
        'options' => function ($value) {
            return trim(strip_tags($value));
        },
    ),
    'testarray' => array(
        'filter' => FILTER_CALLBACK,
        'options' => function ($value) {
            return trim(strip_tags($value));
        },
    ),
);
*/

$myinputs = filter_var_array($data, $args);
var_dump($myinputs);

Output:

array(6) {
  'product_id' =>
  string(5) "libgd"
  'component' =>
  string(2) "10"
  'versions' =>
  string(6) "2.0.33"
  'doesnotexist' =>
  NULL
  'testscalar' =>
  array(4) {
    [0] =>
    string(1) "2"
    [1] =>
    string(2) "23"
    [2] =>
    string(2) "10"
    [3] =>
    string(2) "12"
  }
  'testarray' =>
  string(1) "2"
}
eguvenc на gmail точка com
пред 17 години
<?php
//an example of simply sanitize an array..

$data = array(
                '<b>bold</b>',
                '<script>javascript</script>',
                'P*}i@893746%%%p*.i.*}}|.dw<?php echo "echo works!!";?>');

$myinputs = filter_var_array($data,FILTER_SANITIZE_STRING);

var_dump($myinputs);

//OUTPUT:
//formarray(3) { [0]=> string(4) "bold" [1]=> string(10) "javascript" [2]=> string(26) "P*}i@893746%%%p*.i.*}}|.dw" }
?>
masakielastic at gmail dot com
1 месец пред
For Web API input validation, it can be useful to separate the application-level validation specification from the low-level PHP filtering API.

Some projects use schema validation libraries to keep validation rules independent from the code that actually executes the validation. The same idea can be applied in a small form with filter_var_array(): define field names and rule names in one array, then convert those rule names into PHP filter descriptors.

<?php

$input = [
    'email' => '[email protected]', // valid
    'quantity' => '0',             // invalid: less than 1
];

// Application-level specification.
// It maps input field names to application rule names.
$app_spec = [
    'email' => 'email',
    'quantity' => 'quantity',
];

$filter_descriptors = build_filter_descriptors($app_spec);

$result = filter_var_array($input, $filter_descriptors);

var_dump($result);

function build_filter_descriptors(array $app_spec): array
{
    $filter_descriptors = [];

    foreach ($app_spec as $field => $rule_name) {
        $filter_descriptors[$field] = filter_descriptor_for_rule($rule_name);
    }

    return $filter_descriptors;
}

function filter_descriptor_for_rule(string $rule_name): array
{
    return match ($rule_name) {
        'email' => [
            'filter' => FILTER_VALIDATE_EMAIL,
        ],
        'quantity' => [
            'filter' => FILTER_VALIDATE_INT,
            'options' => [
                'min_range' => 1,
                'max_range' => 10,
            ],
        ],
    };
}
masakielastic at gmail dot com
1 месец пред
FILTER_THROW_ON_FAILURE can be used in each filter descriptor by adding it to the "flags" entry.

<?php

$data = [
    'email' => 'not an email',
    'age' => '20',
];

$filters = [
    'email' => [
        'filter' => FILTER_VALIDATE_EMAIL,
        'flags' => FILTER_THROW_ON_FAILURE,
    ],
    'age' => [
        'filter' => FILTER_VALIDATE_INT,
        'flags' => FILTER_THROW_ON_FAILURE,
        'options' => [
            'min_range' => 0,
            'max_range' => 120,
        ],
    ],
];

try {
    $result = filter_var_array($data, $filters);
} catch (Filter\FilterFailedException $e) {
    echo $e->getMessage(), "\n";
}

?>

When using filter_var_array(), the exception message does not identify which array key failed validation. If you need field-specific validation errors for a form or Web API response, validating each field separately with filter_var() may be easier to handle.

Also note that FILTER_THROW_ON_FAILURE and FILTER_NULL_ON_FAILURE should not be used together.
Тим Хант
пред 7 години
$emails = [
    'a' => '[email protected]',
    'b' => '<email2>@domain.com',
];

$result = filter_var_array($emails, FILTER_SANITIZE_EMAIL);
print_r($result);

// the result will be...
// array('a' => '[email protected]', 'b' => '[email protected]')
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.