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

filter_input

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

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

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

function.filter-input.php

filter_input

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

filter_inputДобива специфична надворешна променлива по име и опционално ја филтрира

= NULL

filter_input(
         int $type,
         string $var_name,
         int $filter = FILTER_DEFAULT,
         array|int $options = 0
): mixed

Параметри

type
вистинска функција, само прототип за тоа како треба да биде функцијата. INPUT_* constants.
Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Содржината на суперглобалната што се филтрира е оригиналната "сурова" содржина обезбедена од SAPI, пред каква било корисничка модификација на суперглобалната. За да филтрирате модифицирана суперглобална, користете filter_var() instead.

var_name
Име на променлива за филтрирање во соодветната type superglobal.
filter
Филтер што треба да се примени. Може да биде филтер за валидација со користење на еден од FILTER_VALIDATE_* константите, филтер за чистење со користење на еден од FILTER_SANITIZE_* or FILTER_UNSAFE_RAW, или прилагоден филтер со користење на FILTER_CALLBACK.

Забелешка: Стандардно е FILTER_DEFAULT, што е алијас на FILTER_UNSAFE_RAW. Ова ќе резултира со никакво филтрирање по стандард.

options
Асоцијативна array на опции, или битно поле од константите на знамињата на филтерот FILTER_FLAG_*. Ако filter прифаќа опции, знамињата може да се обезбедат со користење на "flags" поле од низата.

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

При успех враќа филтрирана променлива. Ако променливата не е поставена false се враќа. При неуспех false се враќа, освен ако FILTER_NULL_ON_FAILURE се користи знамето, во кој случај null се враќа.

Примери

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

<?php
$search_html
= filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
$search_url = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_ENCODED);
echo
"You have searched for $search_html.\n";
echo
"<a href='?search=$search_url'>Search again.</a>";
?>

Горниот пример ќе прикаже нешто слично на:

You have searched for Me &#38; son.
<a href='?search=Me%20%26%20son'>Search again.</a>

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

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

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

CertaiN
пред 11 години
This function provides us the extremely simple solution for type filtering.

Without this function...
<?php
if (!isset($_GET['a'])) {
    $a = null;
} elseif (!is_string($_GET['a'])) {
    $a = false;
} else {
    $a = $_GET['a'];
}
$b = isset($_GET['b']) && is_string($_GET['b']) ? $_GET['b'] : '';
?>

With this function...
<?php
$a = filter_input(INPUT_GET, 'a');
$b = (string)filter_input(INPUT_GET, 'b');
?>

Yes, FILTER_REQUIRE_SCALAR seems to be set as a default option. 
It's very helpful for eliminating E_NOTICE, E_WARNING and E_ERROR. 
This fact should be documented.
антони точки парсонс на manx точка нет
пред 18 години
FastCGI seems to cause strange side-effects with unexpected null values when using INPUT_SERVER and INPUT_ENV with this function. You can use this code to see if it affects your server:
<?php
var_dump($_SERVER);
foreach ( array_keys($_SERVER) as $b ) {
    var_dump($b, filter_input(INPUT_SERVER, $b));
}
echo '<hr>';
var_dump($_ENV);
foreach ( array_keys($_ENV) as $b ) {
    var_dump($b, filter_input(INPUT_ENV, $b));
}
?>
If you want to be on the safe side, using the superglobal $_SERVER and $_ENV variables will always work. You can still use the filter_* functions for Get/Post/Cookie without a problem, which is the important part!
rimelek at rimelek dot hu
пред 11 години
If your $_POST contains an array value:
<?php
$_POST  = array(
    'var' => array('more', 'than', 'one', 'values')
);
?>
you should use FILTER_REQUIRE_ARRAY option:
<?php
var_dump(filter_input(INPUT_POST, 'var', FILTER_DEFAULT , FILTER_REQUIRE_ARRAY));
?>
Otherwise it returns false.
ss23 at ss23 dot geek dot nz
пред 15 години
Note that this function doesn't (or at least doesn't seem to) actually filter based on the current values of $_GET etc. Instead, it seems to filter based off the original values.
<?php
$_GET['search'] = 'foo'; // This has no effect on the filter_input

$search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
$search_url = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_ENCODED);
echo "You have searched for $search_html.\n";
echo "<a href='?search=$search_url'>Search again.</a>";
?>

If you need to set a default input value and filter that, use filter_var on your required input variable instead
Stefan Weinzierl
12 години пред
Here is an example how to work with the options-parameter. Notice the 'options' in the 'options'-Parameter!

<?php
$options=array('options'=>array('default'=>5, 'min_range'=>0, 'max_range'=>9));

$priority=filter_input(INPUT_GET, 'priority', FILTER_VALIDATE_INT, $options);
?>

$priority will be 5 if the priority-Parameter isn't set or out the given range.
chris на chlab точка ch
пред 14 години
To use a class method for a callback function, as usual, provide an array with an instance of the class and the method name.
Example:

<?php
class myValidator
{
  public function username($value)
  {
    // return username or boolean false
  }
}

$myValidator = new myValidator;
$options = array('options' => array($myValidator, 'username'));
$username = filter_input(INPUT_GET, 'username', FILTER_CALLBACK, $options);
var_dump($username);
?>
akshay dot leadindia at gmail dot com
12 години пред
The beauty of using this instead of directly using filter_var( $_GET['search'] ) is that you don't need to check if( isset( $_GET['search'] ) ) as if you pass that to filter_var and the key is not set then it will result in a warning. This function simplifies this and will return the relevant result to you (as per your options set) if the key has not been set in the user input. 

If the type of filter you are using also supports a 'default' argument then this function will also stuff your missing input key with that value, again saving your efforts
travismowens at gmail dot com
пред 15 години
I wouldn't recommend people use this function to store their data in a database.  It's best not to encode data when storing it, it's better to store it raw and convert in upon the time of need.

One main reason for this is because if you have a short CHAR(16) field and the text contains encoded characters (quotes, ampersand) you can easily take a 12 character entry which obviously fits, but because of encoding it no longer fits.

Also, while not as common, if you need to use this data in another place, such as a non webpage (perhaps in a desktop app, or to a cell phone SMS or to a pager) the HTML encoded data will appear raw, and now you have to decode the data.

In summary, the best way to architect your system, is to store data as raw, and encode it only the moment you need to.  So this means in your PHP upon doing a SQL query, instead of merely doing an   echo $row['title']  you need to run htmlentities() on your echos, or better yet, an abstract function.
HonzaZ
3 години пред
In fastcgi sapi implementations, filter_input(INPUT_SERVER) can return empty results.

In my case (8.1.9 64bit php-cgi) it was caused by auto_globals_jit enabled . When disabled (in php.ini on php startup), filter_input(INPUT_SERVER) works correctly.

php-fpm sapi isn't affected.
Навигација

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

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

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

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

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

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

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