PHP: Validation of US Phone numbers

后端 未结 1 1127
梦谈多话
梦谈多话 2020-12-07 04:14

I am currently working with validation of US phone numbers. The issue is that code below is always echoing after a valid or invalid input Please enter a valid phone nu

相关标签:
1条回答
  • 2020-12-07 05:11

    Try This

    <?php
    class Validation {
        public $default_filters = array(
    
            'phone' => array(
                'regex'=>'/^\(?(\d{3})\)?[-\. ]?(\d{3})[-\. ]?(\d{4})$/',
                'message' => 'is not a valid US phone number format.'
            )
        );
        public $filter_list = array();
    
        function Validation($filters=false) {
            if(is_array($filters)) {
                $this->filters = $filters;
            } else {
                $this->filters = array();
            }
        }
    
        function validate($filter,$value) {
            if(in_array($filter,$this->filters)) {
                if(in_array('default_filter',$this->filters[$filter])) {
                    $f = $this->default_filters[$this->filters[$filter]['default_filter']];
                    if(in_array('message',$this->filters[$filter])) {
                        $f['message'] = $this->filters[$filter]['message'];
                    }
                } else {
                    $f = $this->filters[$filter];
                }
            } else {
                $f = $this->default_filters[$filter];
            }
            if(!preg_match($f['regex'],$value)) {
                $ret = array();
                $ret[$filter] = $f['message'];
                return $ret;
            }
            return true;
        }
    }
    
    //example usage
    $validation = new Validation();
    echo nl2br(print_r($validation->validate('phone','555-555-1212'),true));
    echo nl2br(print_r($validation->validate('phone','(555)-555-1212'),true));
    echo nl2br(print_r($validation->validate('phone','555 555 1212'),true));
    echo nl2br(print_r($validation->validate('phone','555.555.1212'),true));
    echo nl2br(print_r($validation->validate('phone','(555).555.1212'),true));
    echo nl2br(print_r($validation->validate('phone','(555)---555.1212'),true));//will not match
    ?>
    
    0 讨论(0)
提交回复
热议问题