验证在codeigniter中输入的电话号码的好方法是什么?
这是我第一次编写应用程序,我根本不了解正则表达式。
电话号码有三个输入字段会更容易吗?
答案 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点之后
我认为今天我们可以假设用户知道要输入什么。