关于PHP常量的总结以及变量过滤器的使用
一、PHP常量的总结
预定义常量
- 查看php版本号:PHP_version
- 查看当前操作系统:PHP_OS_FAMILY
- 环境变量的目录列表的分隔符:PATH_SEPARATOR
- 目录分隔符:directory_separator
- PHP这门语言最大的整数:PHP_int_max
- PHP这门语言最大的浮点数:PHP—float_max
魔术常量
__function__;
__function__;
__line__;
__namespace__
1、特点:
- 常量必须初始化赋值;
- 常量不能重新被定义或者取消定义;
- 常量不受作用域的限制,具有超全局作用域;;
2、常量的定义:
2.1 define
函数方法定义常量:
语法:
define(常量名,值,是否对大小写敏感);
2.2 const
定义常量;
语法:
const 变量名=值;
3、注意事项:
define
函数的第三个参数是否大小写敏感,系统默认是false
;define
可以放入条件分支语句中,而const
不可以放入;
二、变量过滤器的使用
变量过滤器有什么用?
我们做web应用程序需要对用户输入的数据进行判断,比如我们需要用户输入的年龄是18岁,但是用户给我来一个十八岁,很显然,前面的这个18是是整型,而后面这个十八是字符型,这个时候我们就需要系统去做判断,这个时候就可以使用变量过滤器进行过滤判断,确保用户输入的数据是合法的程序员需要的(当然其他方法也是有的,这里只是举个例子)。
过滤器函数:
使用下面代码可以遍历出系统提供的过滤器:
foreach(filter_list() as $filter)
{
echo $filter ."=>".filter_id($filter)."<br>";
}
filter_var()
:通过一个指定的过滤器来过滤单一的变量
`filter_var(变量名,过滤器名称);`
代码举例:
$int = 18;
if(!filter_var($int, FILTER_VALIDATE_INT)){
echo("不是整型");
}else{
echo("是整型");
}
输出结果:是整型
filter_var_array()
:通过相同的或不同的过滤器来过滤多个变量
语法:filter_var_array(array,args)
参数 | 描述 |
---|---|
array |
必需的,带有字符串的数组,包含要过滤的数据 |
args |
可选的,合法的数组键是变量名。合法的值是过滤器ID,或者规定过滤器,标志以及选项的数组。该参数也可以是一个单独的过滤器ID,如果是这样,输入数组中的所有值由指定过滤器进行过滤。 |
举例:
<?php
$arr = array
(
"username" => "jiulinghou",
"age" => "18",
"email" => "123456@qq.com",
);
// 过滤
$filters = array
(
"username" => array
(
"filter" =>FILTER_CALLBACK, // FILTER_CALLBACK 过滤器使用用户自定义函数对值进行过滤。
"flags" =>FILTER_FORCE_ARRAY,
"options" => "ucwords" // ucwords 函数 每个单词的首字符转换为大写
),
"age" =>array
(
"filter" =>FILTER_VALIDATE_INT, // 过滤 age 的值是否为整型
"options" => array
(
"min_range" =>1,
"max_range" =>120 //范围限制在 1~120 之间
)
),
"email" => FILTER_VALIDATE_EMAIL, //过滤 email
);
print_r(filter_var_array($arr, $filters));
// Array ( [username] => Jiulinghou [age] => 18 [email] => 123456@qq.com )
// 以上 email 如果不是一个正确的 email 那么输出结果为:Array ( [username] => Jiulinghou [age] => 18 [email] => )
filter_input
:获取一个输入变量,并对它进行过滤
定义和用法
filter_input()
函数从脚本外部获取输入,并进行过滤,本函数用于对来自非安全来源的变量进行验证,比如用户的输入。
本函数可从下面来源获取输入:
- INPUT_GET
- INPUT_POST
- INPUT_COOKIE
- INPUT_ENV
- INPUT_SERVER
- INPUT_SESSION (Not yet implemented)
- INPUT_REQUEST (Not yet implemented)
如果成功,则返回被过滤的数据,如果失败,则返回 false,如果 variable 参数未设置,则返回 NULL。
语法:
filter_input(input_type, variable, filter, options)
input_type 参数: 必须的。规定输入的类型;
variable 参数:规定要过滤的变量;
fiter 参数:可选,规定要是用的过滤器ID。默认是filter_sanitize_string,简单来说就是设置一个过滤器;
options 参数:规定包含标志/选项的数组。检查每个过滤器可能的标志和选项。
举个栗子:
下面测试一个从表单 通过 post 传过来一个email 的变量
<?php
if(!filter_input(input_post,'email',filter_validate_email))
{
echo '传过来的不是一个正确的Email';
}else{
echo 'email格式是正确的!';
}
filter_input_array
: 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤
其实这个跟上面那个 filter_array 的方法意思差不多 知识由于是input 传过来的值 需要把 传递方法和变量引进来;
定义和用法
filter_input_array() 函数从脚本外部获取多项输入,并进行过滤。
本函数无需重复调用 filter_input(),对过滤多个输入变量很有用。
本函数可从各种来源获取输入:
- INPUT_GET
- INPUT_POST
- INPUT_COOKIE
- INPUT_ENV
- INPUT_SERVER
- INPUT_SESSION (Not yet implemented)
- INPUT_REQUEST (Not yet implemented)
如果成功,则返回被过滤的数据,如果失败,则返回 false。
语法
filter_input(input_type, args)
举个栗子:
<?php
$filters = array
(
"name" => array
(
"filter"=>FILTER_CALLBACK,
"flags"=>FILTER_FORCE_ARRAY,
"options"=>"ucwords"
),
"age" => array
(
"filter"=>FILTER_VALIDATE_INT,
"options"=>array
(
"min_range"=>1,
"max_range"=>120
)
),
"email"=> FILTER_VALIDATE_EMAIL,
);
print_r(filter_input_array(INPUT_POST, $filters));
?>
输出结果:
Array
(
[name] => Peter
[age] => 41
[email] => peter@example.com
)