开发者

codeigniter form validation with phone numbers

开发者 https://www.devze.com 2022-12-14 23:26 出处:网络
What\'s a good way to validate phone numbers being input in codeigniter? It\'s my first time writing an app, and I don\'t really understand regex at all.

What's a good way to validate phone numbers being input in codeigniter?

It's my first time writing an app, and I don't really understand regex at all.

Is it easier to have three input fields f开发者_运维问答or the phone number?


Here's a cool regex I found out on the web. It validates a number in almost any US format and converts it to (xxx) xxx-xxxx. I think it's great because then people can enter any 10 digit US phone number using whatever format they are used to using and you get a correctly formatted number out of it.

Here's the whole function you can drop into your MY_form_validation class. I wanted my form to allow empty fields so you'll have to alter it if you want to force a value.

function valid_phone_number_or_empty($value)
{
    $value = trim($value);
    if ($value == '') {
        return TRUE;
    }
    else
    {
        if (preg_match('/^\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}$/', $value))
        {
            return preg_replace('/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/', '($1) $2-$3', $value);
        }
        else
        {
            return FALSE;
        }
    }
}


The best way is not to validate phone numbers at all, unless you're absolutley 100% positive that you're only dealing with phone numbers in the US or at least North America. As soon as you allow phone numbers from Europe I don't think there's a regex which covers all possibilities.


strip out the non-digits with this:

$justNumbers = preg_replace( '/\D/', $_POST[ 'phone_num' ] );

and see if there are enough characters!

$numRequired = 7; // make your constraints here
if( strlen( $justNumbers ) < $numRequired ){ /* ... naughty naughty ... */ }

this is loose, of course, but will work for international numbers as well (as all it's really doing is seeing if there are over 7 numbers in the input).

just change the number of required digits according to your specifications.


The regex solution as explained by Dan would be the way to do it - but you might want to re-think validating phone numbers at all. What if the user wants to add a note like he/she would do on paper? - I see many values entered in the phone number fields to be stuff like:

307-555-2323 (home)

or

307-555-3232 after 6pm

I think today we can assume the users knows what to enter.

0

精彩评论

暂无评论...
验证码 换一张
取 消