在php中验证的电话号码

时间:2012-11-26 13:35:00

标签: php

我想“验证”我发布的电话号码。我真的不关心格式,我只想使用数字和一些字符。 我尝试了这段代码,但如果我在字符串中输入至少一个数字,那么字符串将是有效的。 (例如:asdafadas-1asd将有效)  如何解决这个问题?

$phonebool=true;
       if (!(strcspn($_POST['phone'], '0123456789-/ ') != strlen($_POST['phone']) )){
           $_SESSION['phone_err']='Only numbers and -/';
           $phonebool=false;
       }
谢谢。

5 个答案:

答案 0 :(得分:3)

您应该使用正则表达式,例如:

/^[0-9\/-]+$/

否则看看libphonenumber - 似乎存在一个php端口:https://github.com/davideme/libphonenumber-for-PHP

示例:

var_dump(preg_match('/^[0-9\/-]+$/', 'asdafadas-1asd'));
=> int(0)

var_dump(preg_match('/^[0-9\/-]+$/', '12/34-56'));
=> int(1)

答案 1 :(得分:2)

试试这个。

if(ereg("^[0-9]{3}-[0-9]{3}-[0-9]{4}$", $number) ) {
    echo "works";
} else {
    $errmsg = 'Please enter your valid phone number';
}  

答案 2 :(得分:1)

工作代码

if (!(preg_match("([0-9-]+)", $_POST['phone']) != strlen($_POST['phone']) )){
    $_SESSION['phone_err']='Only numbers and -/';
    $phonebool=false;
}

答案 3 :(得分:0)

一个建议:使用javascript / jquery验证您的表单,以便用户在提交之前立即纠正。

答案 4 :(得分:0)

试试这个:

$phonebool=true;
if (!(preg_match("([0-9-]+)", $_POST['phone']) != strlen($_POST['phone']) )){
    $_SESSION['phone_err']='Only numbers and -/';
    $phonebool=false;
}