<?php

    function validator($input, $modes) {
        $ret=null;
        foreach($modes as $key=>$item) {
            if(!$input[$key] && $item['required']) {
                $ret[$key]['error']='required';
            } else {
                switch($item['mode']) {
                    case 'email':
                        if (!filter_var($input[$key], FILTER_VALIDATE_EMAIL)) { $ret[$key]['error']='wrong'; }
                    break;
                    case 'url':
                        if (!filter_var($input[$key], FILTER_VALIDATE_URL)) { $ret[$key]['error']='wrong'; }
                    break;  
                    case 'int':
                        if (!filter_var($input[$key], FILTER_VALIDATE_INT)) { $ret[$key]['error']='wrong'; }                    
                    break;   
                    case 'float':
                        if (!filter_var($input[$key], FILTER_VALIDATE_FLOAT)) { $ret[$key]['error']='wrong'; }                    
                    break;                                      
                }
                if($item['max'] && strlen($input[$key])>$item['max'] && ($item['required'] || strlen($input[$key]>0))) {
                    $ret[$key]['error']='max';
                    $ret[$key]['min']=$item['min'];
                    $ret[$key]['max']=$item['max'];
                }
                if($item['min'] && strlen($input[$key])<$item['min'] && ($item['required'] || strlen($input[$key]>0))) {
                    $ret[$key]['error']='min';
                    $ret[$key]['min']=$item['min'];
                    $ret[$key]['max']=$item['max'];
                }                
            }

        }
        return $ret;
    }
?>