<?php 
 
/*
 
 *  Form Data validation
 
 *
 
 *
 
 *  Full example:
 
 *
 
 *    $rules = array(
 
 *         'username' => 'charlength:8-16,alphanumeric',
 
 *         'alphanumeric' => 'alphanumeric',
 
 *         'required' => 'required',
 
 *        'email' => 'email',
 
 *         'alpha' => 'alpha',
 
 *         'password' => 'password',
 
 *         'range' => 'range:1-16',
 
 *              'match' => 'match:this is a test',
 
 *              'regex' => 'regex:/quick/'
 
 *    );
 
 *
 
 *        $data = array(
 
 *         'username' => 'markmendoza123',
 
 *         'alphanumeric' => 'aaaaaa111111',
 
 *         'required' => '',
 
 *         'email' => '[email protected]',
 
 *         'alpha' => 'aaaaaabbbbbbccccc',
 
 *         'password' => '6alphanumeric',
 
 *        'range' => '8',
 
 *              'match' => 'this is a test',
 
 *              'regex' => 'the quick brown'
 
 *
 
 *     );
 
 *    
 
 *    $v = new \validation\validate($data, $rules);
 
 *    
 
 *    if(!$v->success()){
 
 *        var_dump($v->$errors);
 
 *     }else{
 
 *         echo 'Success.';
 
 *     } 
 
 * 
 
 * 
 
 */
 
namespace validation{
 
 
    class rules{
 
        /* Add your rules here, return true means valid */
 
 
        public static function regex($val,$regex){
 
            return preg_match($regex,$val);
 
        }
 
 
        public static function match($val,$param){
 
            return $val == $param;
 
        }
 
 
        public static function required($val){
 
            return !empty($val);
 
        }
 
 
        public static function charlength($val,$param){
 
            $l = strlen($val);
 
            $p = explode('-',$param);
 
 
            return $l >= $p[0] && $l <= $p[1];
 
        }
 
 
        public static function alphanumeric($val){
 
            return preg_match('/^([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*$/', $val);
 
        }
 
 
        public static function email($val){
 
            return preg_match('/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/',$val);
 
        }
 
        
 
        public static function alpha($val){
 
            return preg_match('/^[A-Za-z]+$/',$val);
 
        }
 
        
 
        public static function password($val){
 
            return preg_match('/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$/',$val);
 
        }
 
        
 
        public static function url($val){
 
            return preg_match('/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/',$val);
 
        }
 
        
 
        public static function range($val,$param){
 
           
 
            $p = explode('-',$param);
 
 
            return $val >= $p[0] && $val <= $p[1];
 
        }
 
        
 
 
    }
 
 
    class validate{
 
        public $errors = false;
 
        public function __construct($data, $rules){
 
 
            //array('username' =>'charlength:8-16')
 
            foreach($rules as $key => $val){
 
                //charlength:8-16,alphanumeric
 
                $rule = explode(',',$val);
 
                foreach( $rule as $k => $v){
 
                    //charlength:8-16
 
                    $p = explode(':',$v,2);
 
                    if( !isset($data[$key]) || (isset($data[$key]) && !rules::{$p[0]}($data[$key],isset($p[1])?$p[1]:null) ) ){
 
                        $this->$errors[$key] = $val;
 
                    }
 
                }
 
            }
 
        }
 
 
        public function success(){
 
            return !$this->$errors;
 
        }
 
 
    }
 
    
 
 
 
 
}
 
 |