= $min; // On vérifie les FLAGS s'il est donné if( is_array($flags) ) foreach( $flags as $flag ) $lenCheck = $lenCheck && self::run($flag, $value); return $lenCheck; } /* [2] Si de type ARRAY(type_elements) =========================================================*/ if( preg_match('/^array<(.+)>$/', $type, $match) ){ // Si c'est pas un tableau on retourne une erreur if( !is_array($value) ) return false; $elements_type = $match[1]; // On verifie le type pour chaque element foreach($value as $element) // Si erreur dans au moins 1 element, on retourne que c'est incorrect if( !self::run($elements_type, trim($element) ) ) return false; // Si aucune erreur, on retourne que tout est bon return true; } /* [n] Sinon, tous les autres types definis =========================================================*/ switch($type){ // Quoi que ce soit case 'mixed': return $checker && !is_null($value); break; // Entier positif (id dans BDD) case 'id': return $checker && is_numeric($value) && $value <= 2147483647 && $value >= 0; break; // String quelconque (peut etre vide) case 'text': return $checker && is_string($value); // Adresse mail (255 caracteres max) case 'mail': return $checker && is_string($value) && strlen($value) <= 50 && preg_match('/^[\w\.-]+@[\w\.-]+\.[a-z]{2,4}$/i', $value); break; // Hash sha1/md5 case 'hash': return $checker && is_string($value) && preg_match('/^[\da-f]{128}$/', $value); break; case 'alphanumeric': return $checker && is_string($value) && preg_match('/^[\w\. -]+$/ui', $value); break; case 'letters': return $checker && is_string($value) && preg_match('/^[a-z -]+$/i', $value); break; case 'status': return $checker && is_numeric($value) && floor($value) == $value && $value >= 0 && $value <= 100; break; // Tableau non vide case 'array': return $checker && is_array($value) && count($value) > 0; break; // Boolean case 'boolean': case 'bool': return $checker && is_bool($value); break; // Objet non vide case 'object': return $checker && is_object($value) && count((array) $value) > 0; break; // Chaine JSON (on vérifie via le parser) case 'json': return $checker && is_string($value) && json_decode($value, true) !== NULL; break; case 'numeric': return $checker && (is_numeric($value) || $value == null); break; case "float": return $checker && ( is_int($value) || is_float($value) ); break; default: return false; break; } return $checker; } } ?>