我想“验证”我发布的电话号码。我真的不关心格式,我只想使用数字和一些字符。 我尝试了这段代码,但如果我在字符串中输入至少一个数字,那么字符串将是有效的。 (例如:asdafadas-1asd将有效) 如何解决这个问题?
$phonebool=true;
if (!(strcspn($_POST['phone'], '0123456789-/ ') != strlen($_POST['phone']) )){
$_SESSION['phone_err']='Only numbers and -/';
$phonebool=false;
}
谢谢。
答案 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;
}