Ref/filter-Phpdoc专题
filter_has_var
检测是否存在指定类型的变量
说明
bool <span
class="methodname">filter_has_var ( <span
class="methodparam">int $type , <span
class="methodparam">string
$variable_name )
参数
type
INPUT_GET、 INPUT_POST、 INPUT_COOKIE、
INPUT_SERVER、 INPUT_ENV 里的其中一个。
variable_name
要检查的变量名。
返回值
成功时返回 true, 或者在失败时返回 false。
filter_id
返回与某个特定名称的过滤器相关联的id
说明
int filter_id
( string
$filtername )
参数
filtername
待获取的过滤器名称
返回值
如果获取成功则返回过滤器id,如果过滤器不存在则返回 false 。
参见
- filter_list
filter_input_array
获取一系列外部变量,并且可以通过过滤器处理它们
说明
mixed <span
class="methodname">filter_input_array ( <span
class="methodparam">int $type [,
mixed
$definition [, <span
class="type">bool $add_empty =
true ]] )
这个函数当需要获取很多变量却不想重复调用<span class="function">filter_input时很有用。
参数
type
INPUT_GET, INPUT_POST, INPUT_COOKIE,
INPUT_SERVER, or INPUT_ENV之一。
definition
一个定义参数的数组。一个有效的键必须是一个包含变量名的<span
class="type">string,一个有效的值要么是一个filter type,或者是一个<span
class="type">array
指明了过滤器、标示和选项。如果值是一个数组,那么它的有效的键可以是
filter, 用于指明
filter type,flags
用于指明任何想要用于过滤器的标示,或者 options
用于指明任何想要用于过滤器的选项。 参考下面的例子来更好的理解这段说明。
这个参数也可以是一个filter constant的整数。那么数组中的所有变量都会被这个过滤器所过滤。
add_empty
在返回值中添加 null 作为不存在的键。
返回值
如果成功的话返回一个所请求的变量的数组,如果失败的话返回 false
。对于数组的值,如果过滤失败则返回 false ,如果variable_name
不存在的话则返回 null 。 如果标示 FILTER_NULL_ON_FAILURE
被使用了,那么当变量不存在时返回 false ,当过滤失败时返回
null 。
范例
示例 #1 一个 filter_input_array 的例子
<?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";
?>
以上例程会输出:
array(6) {
["product_id"]=>
string(17) "libgd%3Cscript%3E"
["component"]=>
array(1) {
[0]=>
int(10)
}
["versions"]=>
string(6) "2.0.33"
["doesnotexist"]=>
NULL
["testscalar"]=>
bool(false)
["testarray"]=>
array(1) {
[0]=>
int(2)
}
}
更新日志
| 版本 | 说明 |
|---|---|
| 5.4.0 | 添加 add_empty 参数. |
注释
Note:
在
INPUT_SERVER数组中并没有 REQUEST_TIME ,因为它是被稍后插入到$_SERVER中的。
参见
- filter_input
- filter_var_array
- Types of filters
filter_input
通过名称获取特定的外部变量,并且可以通过过滤器处理它
说明
mixed <span
class="methodname">filter_input ( <span
class="methodparam">int $type , <span
class="methodparam">string
$variable_name [, <span
class="type">int $filter =
FILTER_DEFAULT [, <span
class="type">mixed $options ]] )
参数
type
INPUT_GET, INPUT_POST, INPUT_COOKIE,
INPUT_SERVER或 INPUT_ENV之一。
variable_name
待获取的变量名。
filter
The ID of the filter to apply. The
Types of filters manual
page lists the available filters.
If omitted, FILTER_DEFAULT will be used, which is equivalent to
FILTER_UNSAFE_RAW.
This will result in no filtering taking place by default.
options
一个选项的关联数组,或者按位区分的标示。如果过滤器接受选项,可以通过数组的
"flags" 位去提供这些标示。
返回值
如果成功的话返回所请求的变量。如果过滤失败则返回 false
,如果variable_name 不存在的话则返回 null 。 如果标示
FILTER_NULL_ON_FAILURE 被使用了,那么当变量不存在时返回
false ,当过滤失败时返回 null 。
范例
示例 #1 一个 filter_input 的例子
<?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 & son.
<a href='?search=Me%20%26%20son'>Search again.</a>
参见
- filter_var
- filter_input_array
- filter_var_array
- Types of filters
filter_list
返回所支持的过滤器列表
说明
array <span class="methodname">filter_list ( <span class="methodparam">void )
返回值
返回一个所支持的过滤器的名称的列表,如果没有这样子的过滤器的话则返回空数组。这个数组的索引不是过滤器id, 你可以通过 filter_id 去根据名称获取它们。
范例
示例 #1 一个 filter_list 的例子
<?php
print_r(filter_list());
?>
以上例程的输出类似于:
Array
(
[0] => int
[1] => boolean
[2] => float
[3] => validate_regexp
[4] => validate_url
[5] => validate_email
[6] => validate_ip
[7] => string
[8] => stripped
[9] => encoded
[10] => special_chars
[11] => unsafe_raw
[12] => email
[13] => url
[14] => number_int
[15] => number_float
[16] => magic_quotes
[17] => callback
)
filter_var_array
获取多个变量并且过滤它们
说明
mixed <span
class="methodname">filter_var_array ( <span
class="methodparam">array $data [,
mixed
$definition [, <span
class="type">bool $add_empty =
true ]] )
不需要重复调用 filter_var 就能获取多个变量。
参数
data
数组,键为字符串,值为待过滤的数据。
definition
一个定义参数的数组。一个有效的键必须是一个包含变量名的<span
class="type">string,一个有效的值要么是一个filter type,或者是一个<span
class="type">array
指明了过滤器、标示和选项。如果值是一个数组,那么它的有效的键可以是
filter, 用于指明
filter type,flags
用于指明任何想要用于过滤器的标示,或者 options
用于指明任何想要用于过滤器的选项。 参考下面的例子来更好的理解这段说明。
这个参数也可以是一个filter constant的整数。那么数组中的所有值都会被这个过滤器所过滤。
add_empty
在返回值中添加 null 作为不存在的键。
返回值
如果成功则返回一个包含所请求变量的数组,或者当失败时返回 false 。
一个数组的值如果过滤失败则为 false ,或者为 null
如果变量不存在的话。
范例
示例 #1 一个 filter_var_array 的例子
<?php
error_reporting(E_ALL | E_STRICT);
$data = 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_FORCE_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_FORCE_ARRAY,
)
);
$myinputs = filter_var_array($data, $args);
var_dump($myinputs);
echo "\n";
?>
以上例程会输出:
array(6) {
["product_id"]=>
string(17) "libgd%3Cscript%3E"
["component"]=>
array(1) {
[0]=>
int(10)
}
["versions"]=>
string(6) "2.0.33"
["doesnotexist"]=>
NULL
["testscalar"]=>
bool(false)
["testarray"]=>
array(1) {
[0]=>
int(2)
}
}
更新日志
| 版本 | 说明 |
|---|---|
| 5.4.0 | 添加 add_empty 参数。 |
参见
- filter_input_array
- filter_var
- filter_input
- Types of filters
filter_var
使用特定的过滤器过滤一个变量
说明
mixed <span
class="methodname">filter_var ( <span
class="type">mixed $variable [, <span
class="methodparam">int $filter<span
class="initializer"> = FILTER_DEFAULT [, <span
class="methodparam">mixed $options
]] )
参数
variable
待过滤的变量。注意:标量的值在过滤前,会被转换成字符串。
filter
The ID of the filter to apply. The
Types of filters manual
page lists the available filters.
If omitted, FILTER_DEFAULT will be used, which is equivalent to
FILTER_UNSAFE_RAW.
This will result in no filtering taking place by default.
options
一个选项的关联数组,或者按位区分的标示。如果过滤器接受选项,可以通过数组的
"flags" 位去提供这些标示。 对于回调型的过滤器,应该传入 <span
class="type">callable。这个回调函数必须接受一个参数,即待过滤的值,并且
返回一个在过滤/净化后的值。
<?php
// for filters that accept options, use this format
$options = array(
'options' => array(
'default' => 3, // value to return if the filter fails
// other options here
'min_range' => 0
),
'flags' => FILTER_FLAG_ALLOW_OCTAL,
);
$var = filter_var('0755', FILTER_VALIDATE_INT, $options);
// for filter that only accept flags, you can pass them directly
$var = filter_var('oops', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
// for filter that only accept flags, you can also pass as an array
$var = filter_var('oops', FILTER_VALIDATE_BOOLEAN,
array('flags' => FILTER_NULL_ON_FAILURE));
// callback validate filter
function foo($value)
{
// Expected format: Surname, GivenNames
if (strpos($value, ", ") === false) return false;
list($surname, $givennames) = explode(", ", $value, 2);
$empty = (empty($surname) || empty($givennames));
$notstrings = (!is_string($surname) || !is_string($givennames));
if ($empty || $notstrings) {
return false;
} else {
return $value;
}
}
$var = filter_var('Doe, Jane Sue', FILTER_CALLBACK, array('options' => 'foo'));
?>
返回值
Returns the filtered data, or false if the filter fails.
范例
示例 #1 一个 filter_var 的例子
<?php
var_dump(filter_var('[email protected]', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED));
?>
以上例程会输出:
string(15) "[email protected]"
bool(false)
参见
- filter_var_array
- filter_input
- filter_input_array
- Types of filters
目录
- filter_has_var — 检测是否存在指定类型的变量
- filter_id — 返回与某个特定名称的过滤器相关联的id
- filter_input_array — 获取一系列外部变量,并且可以通过过滤器处理它们
- filter_input — 通过名称获取特定的外部变量,并且可以通过过滤器处理它
- filter_list — 返回所支持的过滤器列表
- filter_var_array — 获取多个变量并且过滤它们
- filter_var — 使用特定的过滤器过滤一个变量