使用电话号码进行codeigniter表单验证

时间:2009-12-20 22:48:23

标签: codeigniter

验证在codeigniter中输入的电话号码的好方法是什么?

这是我第一次编写应用程序,我根本不了解正则表达式。

电话号码有三个输入字段会更容易吗?

4 个答案:

答案 0 :(得分:15)

这是我在网上发现的很酷的正则表达式。它以几乎任何美国格式验证数字并将其转换为(xxx)xxx-xxxx。我认为这很棒,因为人们可以使用他们习惯使用的任何格式输入任何10位数的美国电话号码,并且您可以获得格式正确的数字。

这是您可以放入MY_form_validation类的整个功能。我希望我的表单允许空字段,因此如果要强制值,则必须更改它。

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;
        }
    }
}

答案 1 :(得分:3)

最好的方法是不要验证电话号码,除非你绝对100%肯定你只处理美国或至少北美的电话号码。只要你允许来自欧洲的电话号码,我就不认为有正则表达式可以涵盖所有可能性。

答案 2 :(得分:3)

用这个去除非数字:

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

并查看是否有足够的字符!

$numRequired = 7; // make your constraints here
if( strlen( $justNumbers ) < $numRequired ){ /* ... naughty naughty ... */ }
当然,这是松散的,但也适用于国际数字(正如它所做的一样是看输入中是否有超过7个数字。)

只需根据您的规格更改所需的数字。

答案 3 :(得分:0)

Dan解释的正则表达式解决方案将是这样做的方法 - 但您可能想要重新考虑验证电话号码。如果用户想要添加他/她在纸上做的便条怎么办? - 我看到在电话号码字段中输入的许多值都是:

307-555-2323(家)

307-555-3232在下午6点之后

我认为今天我们可以假设用户知道要输入什么。