当前位置: 首页 > 后端技术 > PHP

PHP数据过滤

时间:2023-03-30 00:31:42 PHP

通常在过滤用户输入数据的时候自己写一个方法来判断,比如在验证邮箱地址的时候使用正则表达式$pattern="/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/";if(!preg_match($pattern,$email)){thrownew\Exception(self::ERROR_PARAMETER_EMPTY.'_emailformatiswrong:'.$email);}如果不使用正则表达式,还有其他简单的方法吗?使用过滤器相关函数filter_has_var(type,variable)来检查是否存在指定类型的变量。filter_input从脚本外部获取输入并对其进行过滤。filter_input_array从脚本外部获取多个输入并过滤它们。filter_var接受一个变量并对其进行过滤。filter_var_array获取多个变量并过滤它们。filter_has_var判断$_GET的结果是否包含nameif(!filter_has_var(INPUT_GET,"name")){echo("namedoesnotexist");}else{echo("nameexists");}filter_input看验证的例子emailif(!filter_input(INPUT_GET,'email',FILTER_VALIDATE_EMAIL)){echo"E-Mailisnotvalid";}else{echo"E-Mailisvalid";}filter_input_array过滤整个输入源$filters=array(“名称”=>数组(“过滤器”=>FILTER_CALLBACK,“标志”=>FILTER_FORCE_ARRAY,“选项”=>“ucwords”),“年龄”=>数组(“过滤器”=>FILTER_VALIDATE_INT,“选项”=>array("min_range"=>1,"max_range"=>120)),"email"=>FILTER_VALIDATE_EMAIL,);print_r(filter_input_array(INPUT_POST,$filters));filter_var,filter_var_array不需要输入源,直接过滤值}else{echo("邮箱有效");}inputsourceRangevalidation其他过滤方法strip_tags删除html标签htmlentities转换字符为HTML实体,(还会转义欧元、英镑等货币符号、版权符号等)htmlspecialchars函数将预定义的字符转换成HTML实体。预定义的字符是:&(&)变成&"(双引号)变成"'(单引号)变成'<(小于)变成<(大于)变成>*提示:要将特殊的HTML实体转换回字符,使用htmlspecialcharsdecode()函数。$input="我是标题";echohtmlspecialchars($input)。"\n";echohtmlentities($input)。"\n";echostrip_tags($input)。"\n";$input="--'select*from";echoaddslashes($input)。"\n";