Search code examples
phpregexpreg-matchdigitsstring-length

php match number for first 2 digits and length


I would need to check in php if the number has 10 digit length and the first 2 digits need to be 09 and check for no space too please?

sample true number = 0912345678

Thanks Ramin


Solution

  • You can do that by using regular expressions, like this:

    function checkNumber($number) {
        return !!preg_match('/^09\d{8}$/', "$number");
    }
    

    Or with simple string matching:

    function checkNumber($number) {
        $number = trim("$number");
        if (strlen($number) != 10)
            return false;
    
        if (substr($number, 0, 2) != "09")
            return false;
    
        return trim($number, "0..9") == "";
    }
    

    Both methods gives same output:

    var_dump([$number = '0912345678', checkNumber($number)]);
    var_dump([$number = '9012345678', checkNumber($number)]);
    var_dump([$number = '091234567', checkNumber($number)]);
    var_dump([$number = '09123456788', checkNumber($number)]);
    
    // array(2) {
    //   [0]=>
    //   string(10) "0912345678"
    //   [1]=>
    //   bool(true)
    // }
    // array(2) {
    //   [0]=>
    //   string(10) "9012345678"
    //   [1]=>
    //   bool(false)
    // }
    // array(2) {
    //   [0]=>
    //   string(9) "091234567"
    //   [1]=>
    //   bool(false)
    // }
    // array(2) {
    //   [0]=>
    //   string(11) "09123456788"
    //   [1]=>
    //   bool(false)
    // }
    

    Also, regexp approach is more simpler and flexible, imho.