PHP过滤器
这里介绍的过滤器包括:
1、filter_input
2、filter_input_array
3、filter_var
4、filter_var_array
5、filter_has_var
一、查看有哪些filter可用
首先,我们需要知道现在有哪些filter可用。这时候需要用到filter_list()和filter_id(),如下:
<?php
$filters = filter_list();
foreach($filters as $filter_name) {
echo $filter_name .": ".filter_id($filter_name) ."<br>";
}
?> Will result in:
boolean:
float:
validate_regexp:
validate_url:
validate_email:
validate_ip:
string:
stripped:
encoded:
special_chars:
unsafe_raw:
email:
url:
number_int:
number_float:
magic_quotes:
callback:
上面的代码中,filter_list()输出可用filter的list 到filters这一array,然后,历遍这一array,显示filter的名字和id。
这里不做多的解释,反正可用的filter就上面这么多。
然后,我们来看看我们可以用上面的过滤器做些什么。
二、filter_input和filter_input_array
事实上两个是同一个过滤器,但是filter_input_array是可以接受“过滤器组合”的,具体调用如下:
mixed filter_input ( int $type , string $variable_name [, int $filter = FILTER_DEFAULT [, mixed $options ]] ) mixed filter_input_array ( int $type [, mixed $definition [, bool $add_empty = true ]] )
上面的定义中:
1)$type接受的参数是固定的,是INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, 或者INPUT_ENV中的一个。
2)filter_input中,$variable_name是要使用过滤器的变量名,$filter就是我们上面filter_list过的可用filter之一,$filter可以是一个array。也就是,我们对$variable_name进行过滤时,可以用多个filter。
3)$options是具体的filter要用到的参数,不同的filter需要不同的参数,有些甚至不需要参数。
4)filter_input_arrary中,第二个参数是$definition的一个array。根据manual提供的例子,所谓definition,也就是$variable-$filter-$options构成的一个组合。看起来就像是,我们对多个filter_input进行了一次性定义,然后一次性的执行。
示例代码:
<?php
$search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
echo "You have searched for $search_html.\n";
?>
<?php
// 下面定义了一个array,分别为product_id,component,versions,doesnotexist定义了一个过滤规则。
$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,
);
//执行了上面定义的几条过滤规则
$myinputs = filter_input_array(INPUT_POST, $args);
var_dump($myinputs);
echo "\n";
?>
三、filter_var和filter_var_array
和上面的filter_input其实是一样的,只是,filter_var的输入是var,而不再是固定的那几个选项。
例如:
<?php
var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED));
?>
上面的输出是:
string(15) "bob@example.com"
bool(false)
3、filter_has_var
这个事实上不能算是过滤器,就是看我们的输入里有没有名为variable_name的参数,所以它只返回true和false。具体参数参考filter_input,举个栗子就搞定:
<?php
if ( filter_has_var(INPUT_GET, 'email') ) {
echo "Email Found";
}else{
echo "Email Not Found";
}
?>
PHP过滤器的更多相关文章
- ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器
原文:Filters 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:何镇汐 ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码.过滤器可以配置为全局有效.仅对控 ...
- ASP.NET Web API 过滤器创建、执行过程(二)
ASP.NET Web API 过滤器创建.执行过程(二) 前言 前面一篇中讲解了过滤器执行之前的创建,通过实现IFilterProvider注册到当前的HttpConfiguration里的服务容器 ...
- ASP.NET Web API 过滤器创建、执行过程(一)
ASP.NET Web API 过滤器创建.执行过程(一) 前言 在上一篇中我们讲到控制器的执行过程系列,这个系列要搁置一段时间了,因为在控制器执行的过程中包含的信息都是要单独的用一个系列来描述的,就 ...
- ABP(现代ASP.NET样板开发框架)系列之13、ABP领域层——数据过滤器(Data filters)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之13.ABP领域层——数据过滤器(Data filters) ABP是“ASP.NET Boilerplate P ...
- AngularJS过滤器filter-时间日期格式-渲染日期格式-$filter
今天遇到了这些问题索性就 写篇文章吧 话不多说直接上栗子 不管任何是HTML格式还是JS格式必须要在 controller 里面写 // new Date() 获取当前时间 yyyy-MM-ddd ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】
系列目录 上次的探讨没有任何结果,我浏览了大量的文章和个别系统的参考!决定用Cache来做,这可能有点难以接受但是配合mvc过滤器来做效果非常好! 由于之前的过滤器我们用过了OnActionExecu ...
- Hawk 4.2 过滤器
过滤器可以在流中,过滤掉不符合条件的文档.当然也可勾选反向,此时只会留下不符合条件的文档. 空对象过滤器 最为常用,需要列名,可以过滤掉所有内容为Null,或字符串全部都是空字符的情况 数值范围过滤 ...
- 实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器
MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过App_Start中的FilterConfig来实现的过滤器注册是全局的,也就是整个应用程序都会使用的,针对单独的Fi ...
- 自定义jinja2 过滤器
今天,我们要讲的是自定义jinja2 过滤器这个知识点,因为官方文档对此一代而过,讲得不够清楚,所以我们专门拿出来讲一下. 例子 例子写了两个自定义过滤器,一个是转换字典到字符串的过滤器,一个是返回当 ...
- 前端MVC学习总结(二)——AngularJS验证、过滤器、指令
一.验证 angularJS中提供了许多的验证指令,可以轻松的实现验证,只需要在表单元素上添加相应的ng属性,常见的如下所示: <input Type="text" ng-m ...
随机推荐
- python excellent code link
1. Howdoi Howdoi is a code search tool, written in Python. 2. Flask Flask is a microframework for Py ...
- 第8天-setInterval/setTimeout
setInterval是什么? setInterval()方法重复调用一个函数或执行一个代码段,在每次调用之间具有固定的时间延迟. setInterval(函数,间隔时间) 例如 function f ...
- 配置无线AP 采用POE供电模块怎么配置无线AP没有POE交换机
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 采用POE供电模块怎么配置无线AP没有POE交换机 IP-com f130ap http ...
- 【BZOJ 4572】【SCOI 2016】围棋
http://www.lydsy.com/JudgeOnline/problem.php?id=4572 轮廓线DP:设\(f(i,j,S,x,y)\). \(S\)表示\((i,1)\)到\((i, ...
- 【HDU 5283】Senior's Fish
http://acm.hdu.edu.cn/showproblem.php?pid=5283 今天的互测题,又爆零了qwq 考虑每个点对答案的贡献. 对每个点能产生贡献的时间线上的左右端点整体二分. ...
- 【BZOJ 4567】【SCOI 2016】背单词
http://www.lydsy.com/JudgeOnline/problem.php?id=4567 贪心. 任何不用第一种情况的方案吃的泡椒数都小于\(n^2\),所以最小泡椒数的方案一定不包含 ...
- JZYZOJ1349 SPOJ839 星屑幻想 xor 网络流 最大流
http://172.20.6.3/Problem_Show.asp?id=1349 调了两个小时发现数组开小了[doge].题意:给出几个点,有的点的权值确定,连接两点的边的权值为两点值的异或和,求 ...
- Codeforces Round #449 (Div. 2)ABCD
又掉分了0 0. A. Scarborough Fair time limit per test 2 seconds memory limit per test 256 megabytes input ...
- 【推导】【贪心】XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016 Problem H. Path or Coloring
题意:给你一张简单无向图(但可能不连通),再给你一个K,让你求解任意一个问题:K染色或者输出一条K长路径. 直接贪心染色,对一个点染上其相邻的点的颜色集合之中,未出现过的最小的颜色. 如果染成就染成了 ...
- 【计算几何】【凸包】【极角排序】【二分】Gym - 101128J - Saint John Festival
平面上n个红点,m个黑点,问你多少个黑点至少在一个红三角形内. 对红点求凸包后,转化为询问有多少个黑点在凸包内. 点在凸多边形内部判定,选定一个凸包上的点作原点,对凸包三角剖分,将其他的点极角排序之后 ...