php filter

在PHP出现至今,一直在不断的更新版本,增加新的功能,供我们大家使用,满足我们的需求。PHP 5.2以及更高的版本,PHP filter被绑定于系统,它可以对数据进行自动的过滤和判断。
第一种、PHP filter判断一个变量的内容是否符合要求
使用函数filter_var,第一个参数是要判断的变量。第二个参数是判断的要求,FILTER_VALIDATE_EMAIL表示判断是否符合email格式。如果变量是类似’[email protected]’的数据,系统就会完整的输出‘[email protected]’。如果是错误的格式,比如’boy’,就会输出false。如果没有填写表单中的email字段,系统输出空字符串。
$email = ‘[email protected]’;  
echo filter_var($email, 
FILTER_VALIDATE_EMAIL);

第二种、PHP filter根据要求过滤一个变量的内容
和上面唯一的不同是第二个参数使用FILTER_SANITIZE_EMAIL,输出的结果会不同。如果变量是类似’[email protected]’的数据,系统就会完整的输出’[email protected]’。如果是错误的格式,比如’boy-afds3′,只要是数字和字母和划线等email格式中可以出现的内容,系统同样会完整的输出’boy-afds3′。如果变量没有设置内容,系统输出空字符串。如果是’boy阿三’,系统会把email格式中不允许的东西去除,输出’boy’。
$email = ‘[email protected]’;  
echo filter_var($email,
FILTER_SANITIZE_EMAIL);

第三种、PHP filter判断输入的变量的内容是否符合要求
使用函数filter_input。第一个参数表示从那里获得的数据,INPUT_POST表示通过POST方法传递过来,还可以使用INPUT_GET, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV,代表相应的途径。第二个参数就是数据的名称。第三个参数代表过滤的要求,FILTER_VALIDATE_EMAIL表示判断数据是否符合email格式。
假设通过表单的POST过来的一个字段email。如果是类似’[email protected]’的数据,系统就会完整的输出’[email protected]’。如果是错误的格式,比如’boy’,就会输出false。如果没有填写表单中的email字段,系统输出null,也就是空。
echo filter_input(INPUT_POST, 
‘email’, FILTER_VALIDATE_EMAIL);

第四种、PHP filter根据要求过滤输入的变量的内容
和上面唯一的不同是第二个参数使用FILTER_SANITIZE_EMAIL,输出的结果会不同。假设通过表单的POST过来的一个字段email。
如果是类似’[email protected]’的数据,系统就会完整的输出’[email protected]’。如果是错误的格式,比如’boy-afds3′,只要是数字和字母和划线等email格式中可以出现的内容,系统同样会完整的输出’boy-afds3′。如果没有填写表单中的email字段,系统输出null,也就是空。如果是’boy阿三’源码天空,系统会把email格式中不允许的东西去除,输出’boy’。
echo filter_input
(INPUT_POST, ‘email’, 
FILTER_SANITIZE_EMAIL);  
以上就是PHP filter的具体功能介绍,希望对又需要的朋友有所帮助。

来自:http://www.codesky.net/article/200912/140526.html

php5.20之后增加了一个filter过滤器的扩展,主要用于验证和过滤数据,通常用于用户提交的表单数据,COOKIE等。这对提高程序的安全性和远离SQL注入带来了极大的好处。LFilter类在调用filter API的基础上,封装一个较为完整的类。拿来和大家分享,欢迎指正。注意:filter对于$_FILES 上传文件的类型数据,无法过滤。下面是一个使用Filter自己封装的类。
在本例中,我们使用 filter_input_array() 函数来过滤三个 POST 变量。所接受的 POST 变量是姓名、年龄以及电子邮件地址:

view plainprint?

  1. <?php
  2. $filters = array
  3. (
  4. "name" => array
  5. (
  6. "filter"=>FILTER_CALLBACK,
  7. "flags"=>FILTER_FORCE_ARRAY,
  8. "options"=>"ucwords"
  9. ),
  10. "age" => array
  11. (
  12. "filter"=>FILTER_VALIDATE_INT,
  13. "options"=>array
  14. (
  15. "min_range"=>1,
  16. "max_range"=>120
  17. )
  18. ),
  19. "email"=> FILTER_VALIDATE_EMAIL,
  20. );
  21. print_r(filter_input_array(INPUT_POST, $filters));
  22. ?>

输出类似:
Array
(
[name] => Peter
[age] => 41
[email] => [email protected]
)

来源:http://www.cardii.net/php-filter

<?php

class LFilter

{

private static $_options = array(

‘int‘   => FILTER_VALIDATE_INT,//validate value as integer

‘bool‘  => FILTER_VALIDATE_BOOLEAN,//retrun true for "1","true","on","yes"

‘float‘ => FILTER_VALIDATE_FLOAT,//validate value as float

‘regexp‘=> FILTER_VALIDATE_REGEXP,

‘url‘   => FILTER_VALIDATE_URL,//validate value as url

‘email‘ => FILTER_VALIDATE_EMAIL,//validate value as e-mail

‘ip‘    => FILTER_VALIDATE_IP,//validate value as IP address

‘string‘  => FILTER_SANITIZE_STRING,

‘stripped‘=> FILTER_SANITIZE_STRIPPED,

‘encoded‘ => FILTER_SANITIZE_ENCODED,//URL-encode string,optionally strip or encode special characters

‘chars‘    => FILTER_SANITIZE_SPECIAL_CHARS,

‘semail‘   => FILTER_SANITIZE_EMAIL,//remove all characters except letters,digits and !#$%&‘*+-/=?^_`{|}[email protected][]

‘url‘     => FILTER_SANITIZE_URL,

‘sint‘     => FILTER_SANITIZE_NUMBER_INT,

‘sfloat‘   => FILTER_SANITIZE_NUMBER_FLOAT,//Remove all characters except digits,+- and optionally .eE

‘quotes‘  => FILTER_SANITIZE_MAGIC_QUOTES,//Apply addslashes()

‘octal‘   => FILTER_FLAG_ALLOW_OCTAL,

‘hex‘     => FILTER_FLAG_ALLOW_HEX,

‘slow‘    => FILTER_FLAG_STRIP_LOW,

‘shigh‘   => FILTER_FLAG_STRIP_HIGH,

‘elow‘    => FILTER_FLAG_ENCODE_LOW,

‘ehigh‘   => FILTER_FLAG_ENCODE_HIGH,

‘eamp‘    => FILTER_FLAG_ENCODE_AMP,

‘noquotes‘=> FILTER_FLAG_NO_ENCODE_QUOTES,

‘null‘    => FILTER_FLAG_EMPTY_STRING_NULL,

‘fraction‘=> FILTER_FLAG_ALLOW_FRACTION,

‘thousand‘=> FILTER_FLAG_ALLOW_THOUSAND,

‘scientific‘=> FILTER_FLAG_ALLOW_SCIENTIFIC,

‘srequired‘ => FILTER_FLAG_SCHEME_REQUIRED,

‘ipv4‘    => FILTER_FLAG_IPV4,

‘ipv6‘    => FILTER_FLAG_IPV6,

‘callback‘ => FILTER_CALLBACK,

‘array‘   => FILTER_REQUIRE_ARRAY

);

private static $_data=array();

private static $_flag=array();

public static function getOption($key)

{

if(array_key_exists($key,self::$_options))

return self::$_options[$key];

return NULL;

}

/**

* getInt 验证$_GET变量是否是整数

* e.g.

* <code>

* LFilter::getInt(‘id‘);

* </code>

*

* @param string $field

* @param int $min

* @param int $max

* @access public

* @return bool

*/

public static function getInt($int,$min=null,$max=null)

{

if($min||$max) self::$_data=array(‘min_range‘=>$min,‘max_range‘=>$max);

return filter_input(INPUT_GET,$int,self::getOption(‘int‘),self::$_data);

}

/**

* checkInt 检查$int变量是否是整数

* e.g.

* <code>

*  LFilter::checkInt($_GET[‘id‘]);

*  LFilter::checkInt($_GET[‘id‘],20,2000);

* </code>

*

* @param var $int

* @param int $min

* @param int $max

* @static

* @access public

* @return bool

*/

public static function checkInt($int,$min=null,$max=null)

{

if($min||$max) self::$_data=array(‘min_range‘=>$min,‘max_range‘=>$max);

return filter_var($int,self::getOption(‘int‘),self::$_data);

}

/**

* postInt 检查$_POST变量是否是整数

* <code>

* LFilter::postInt(‘id‘);

* </code>

*

* @param string $int

* @param int $min

* @param int $max

* @static

* @access public

* @return bool

*/

public static function postInt($int,$min=null,$max=null)

{

if($min||$max) self::$_data=array(‘min_range‘=>$min,‘max_range‘=>$max);

return filter_input(INPUT_POST,$int,self::getOption(‘int‘),self::$_data);

}

/**

* getString 检查$_GET变量是否为字符串

* <code>

* LFilter::getString(‘name‘);

* LFilter::getString(‘name‘,‘chars‘);

* </code>

*

* @param mixed $str

* @param string $type

* @static

* @access public

* @return void

*/

public static function getString($str,$type=‘string‘) {

return filter_input(INPUT_GET,$str,self::getOption($type));

}

/**

* checkString 检测变量是否为字符串

*

* @param string $string

* @param string $type

* @param array $flag

* @static

* @access public

* @return void

*/

public static function checkString($string,$type=‘string‘,$flag=array())

{

return filter_var($string,self::getOption($type));

}

/**

* postString 检测$_POST变量是否为字符串

*

* @param mixed $string

* @param string $type

* @param array $flag

* @static

* @access public

* @return void

*/

public static function postString($string,$type=‘string‘,$flag=array())

{

return filter_input(INPUT_POST,$string,self::getOption($type));

}

/**

* postFloat 检测是否为浮点数

* <code>

* LFilter::postFloat(‘price‘);

* </code>

*

* @param mixed $float

* @param mixed $decimal

* @param mixed $allow

* @static

* @access public

* @return void

*/

public static function postFloat($float,$decimal=null,$allow=true)

{

if($decimal) self::$_data[‘options‘][‘decimal‘]=$decimal;

self::$_data[‘flags‘]=self::getOption(‘thousand‘);

return filter_input(INPUT_POST,$float,self::getOption(‘float‘),self::$_data);

}

public static function getFloat($float,$decimal=null,$allow=true)

{

if($decimal) self::$_data[‘options‘][‘decimal‘]=$decimal;

self::$_data[‘flags‘]=self::getOption(‘thousand‘);

return filter_input(INPUT_GET,$float,self::getOption(‘float‘),self::$_data);

}

public static function checkFloat($float,$decimal=null,$allow=true)

{

if($decimal) self::$_data[‘options‘][‘decimal‘]=$decimal;

self::$_data[‘flags‘]=self::getOption(‘thousand‘);

return filter_var($float,self::getOption(‘float‘),self::$_data);

}

public static function postEmail($email)

{

return filter_input(INPUT_POST,$email,self::getOption(‘email‘));

}

public static function getEmail($email)

{

return filter_input(INPUT_GET,$email,self::getOption(‘email‘));

}

public static function checkEmail($email)

{

return filter_var($email,self::getOption(‘email‘));

}

public static function postUrl($url)

{

return filter_input(INPUT_POST,$url,self::getOption(‘url‘));

}

public static function getUrl($url)

{

return filter_input(INPUT_GET,$url,self::getOption(‘url‘));

}

public static function checkUrl($url)

{

return filter_var($url,self::getOption(‘url‘));

}

public static function postIp($ip)

{

return filter_input(INPUT_POST,$ip,self::getOption(‘ip‘));

}

public static function getIp($ip)

{

return filter_input(INPUT_GET,$ip,self::getOption(‘ip‘));

}

public static function checkIp($ip)

{

return filter_var($ip,self::getOption(‘ip‘));

}

/**

* postArray 对$_POST形式$args数组进行过滤,返回数组

* eg:

* <code>

* $args = array(

*      ‘productId‘ => ‘int‘,

*      ‘name‘  => ‘string‘,

*      ‘tagId‘ => array(‘int‘,‘array‘),

*      ‘price‘ => array(‘float‘)

*  );

* LFilter::postArray($args);

* </code>

*

* @param string $args

* @access public

* @return array

*/

public function postArray($args,$type=false)

{

if(empty($_POST)) return NULL;

return filter_input_array(INPUT_POST,self::getArrayArgs($args));

}

public function getArray($args,$type=false) {

if ( empty($_GET) ) return NULL;

return filter_input_array(INPUT_GET,self::getArrayArgs($args));

}

/**

* filterVarArray 对数据$data,以$args数组条件进行过滤,返回数组

*

* eg:

* <code>

* $data = array(

*      ‘product_id‘    => ‘libgd<script>‘,

*      ‘component‘     => ‘10‘,

*      ‘versions‘      => ‘2.0.33‘,

*      ‘testscalar‘    => array(‘2‘, ‘23‘, ‘10‘, ‘12‘),

*      ‘testarray‘     => ‘2‘,

*  );

* $args = array(

*      ‘product_id‘   => ‘string‘,

*      ‘component‘    => array(‘int‘,‘‘,array(‘min_range‘ => 1, ‘max_range‘ => 11)),

*      ‘testscalar‘   => array(‘int‘,‘array‘),

*      ‘testarray‘    => array(‘int‘,‘array‘)

*  );

* LFilter::checkArray($data,$args);

* </code>

*

* @param mixed $args

* @access public

* @return array

*/

public function checkArray($data,$args,$type=false) {

if(empty($data)) return NULL;

$defs = self::getArrayArgs($args,$type);

return filter_var_array($data,$defs);

}

/**

* getArrayArgs  将过滤条件转换成filter函数处理的数组

*

* @param mixed $args

* @access public

* @return array

*/

public static function getArrayArgs($args,$type=null) {

$defs = array();

foreach ($args as $key => $arg) {

if(!is_array($arg)) $arg = array($arg);

if(isset($arg[0])) $defs[$key][‘filter‘] = self::getOption($arg[0]);

if(isset($arg[1])) $defs[$key][‘flags‘] = self::getOption($arg[1]);

if(isset($arg[2])) $defs[$key][‘options‘] = self::getOption($arg[2]);

}

return $defs;

}

}

?>

时间: 2024-10-17 00:26:40

php filter的相关文章

Jsp通过Filter实现UrlRewriter原理

web.xml文件: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&q

JQ中find()与filter()的区别

刚开始学的时候,对于find()和filter()有点理不清楚,下面通过案例相信就可以很快的区分清楚 以下是代码 find弹出的是 filter()弹出的是 下面我们添加div的class是rain find()弹出结果是 fliter弹出结果是 通过以上案例,我们就清楚的知道,find()是查找某个元素内部的元素 filter()查找的是某个元素的自身,而不是内部的元素

spark 教程三 spark Map filter flatMap union distinct intersection操作

RDD的创建 spark 所有的操作都围绕着弹性分布式数据集(RDD)进行,这是一个有容错机制的并可以被并行操作的元素集合,具有只读.分区.容错.高效.无需物化.可以缓存.RDD依赖等特征 RDD的创建基础RDD 1.并行集合(Parallelized Collections):接收一个已经存在的Scala集合,然后进行各种并行运算 var sc=new SparkContext(conf) var rdd=sc.parallelize(Array(2,4,9,3,5,7,8,1,6)); rd

struts2 版本所导致的 Filter 不同

过了好久又重新接触Struts2,使用maven直接获取的struts2-core-2.5.1的包,从网上直接copy了一段web.xml中的Filter,结果报错,struts2.3.x  以后用以下配置: 1 <filter> 2 <filter-name>struts2</filter-name> 3 <filter-class> 4 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExe

web.xml 中的listener、filter、servlet加载及一些配置

在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> filter -> servlet 同时还存在着这样一种配置节:context-param,它用于向 Servlet

Java Web开发——Filter过滤器

一.过滤器 1.1定义 过滤器是一个服务器端的组件,它可以截取用户端的请求与响应信息,并对这些信息进行过滤. 1.2工作原理 1.项目启动时,从Web容器中加载过滤器: 2.过滤器存在于用户请求和Web资源之间: 3.用户请求和Web响应之间的收发都经由过滤器按照过滤规则进行过滤筛选. 1.3过滤器的生命周期 实例化(web.xml加载)→初始化(init方法)→过滤(doFilter方法)→销毁(destroy方法) 1.初始化:当容器第一次加载该过滤器时,init() 方法将被调用.该类在这

【JavaWeb学习】过滤器Filter

一.简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过Filter技

Python-lambda函数,map函数,filter函数

lambda函数主要理解: lambda 参数:操作(参数). lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值.lambda语句构建的其实是一个函数对象 map函数: map(function_to_apply, list_of_inputs).map函数可以把list_of_inputs内的对象依次输入到function_to_apply中进行操作. filter函数: filter(function_to_apply, list_of_inputs).Filter

Filter与Servlet的区别和联系

Filter的执行顺序与实例 Filter介绍 Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链.它与Servlet的区别在于:它不能直接向用户生成响应.完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理. Filter有如下几个用处. 在HttpServletRequest到达Servlet之前,拦截客

Filter简单过滤器的实现

1.过滤器简单编写 package cn.buaa.core.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import ja