1

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

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

谢谢你。

4

5 回答 5

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)
于 2012-11-26T13:38:49.527 回答
2

尝试这个 。

if(ereg("^[0-9]{3}-[0-9]{3}-[0-9]{4}$", $number) ) {
    echo "works";
} else {
    $errmsg = 'Please enter your valid phone number';
}  
于 2012-11-26T13:38:16.490 回答
1

Working code

if (!(preg_match("([0-9-]+)", $_POST['phone']) != strlen($_POST['phone']) )){
    $_SESSION['phone_err']='Only numbers and -/';
    $phonebool=false;
}
于 2012-11-30T10:50:45.840 回答
0

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

于 2012-11-26T13:41:33.380 回答
0

尝试这个:

$phonebool=true;
if (!(preg_match("([0-9-]+)", $_POST['phone']) != strlen($_POST['phone']) )){
    $_SESSION['phone_err']='Only numbers and -/';
    $phonebool=false;
}
于 2012-11-26T13:43:32.087 回答