我有这个代码来检查一些输入数据,以确保它符合正确的格式。但是input_28是一个以数组形式发送的列表字段。是否有一个快捷方式来检查数组中的每个项目的过滤器而不是循环遍历每个项目?
我不在乎错误或哪一行不匹配。我只需要知道是否有任何行与过滤器不匹配,所以我可以返回错误的表单。
if($_POST['input_28'] != filter_var($_POST['input_28'], FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=> "/(\d\d\d\d-\d\d\d\d)|()/" )))){
答案 0 :(得分:0)
如果我理解正确,您正在寻找array_search()
,您可以像这样使用
if(array_search($value, $array)){
// Do stuff
}
请注意array_search()
仅在数组不是多维的情况下才有效,您可以查看documentation以获取更多参考和示例
答案 1 :(得分:0)
对@Alfonso在他的回答中提到的函数的一些搜索引导我进入另一个函数:preg_grep
这导致了这个功能很好的小函数。
$input_28=preg_grep("/^(\d\d\d\d-\d\d\d\d)$/", $_POST['input_28'], PREG_GREP_INVERT);
if(count($input_28) > 0){
#Do Something
}
PREG_GREP_INVERT
使其返回与过滤器不匹配的条目数组。然后我们计算数组,如果有任何不匹配的数组将有一个条目。因此大于0