$mobile= I(‘post.mobile’);

if (strlen($mobile) != 11 || !is_numeric($mobile)) {

var_dump($mobile);
var_dump(is_numeric($mobile));
var_dump(ctype_digit($mobile));

die(‘请输入正确的手机号码’);
}

打印:

string(14)”18765901234″

false

false

原因:

手机号上拼接了ASCII码,导致使用strlen()函数得到的长度比实际长度多了2位 。

当进行打印是看不出来的,strlen()发现了长度并不是11位,是14位。

解决:

$mobile= I(‘post.mobile’);

//过滤掉多余的ASCII码

$mobile = iconv(“UTF-8”, “GB2312//Ignore”, $mobile);
$mobile = iconv(“GB2312”, “UTF-8//Ignore”, $mobile);

if (mb_strlen($mobile, “UTF-8”) != 11 || !is_numeric($mobile)) {

die(‘请输入正确的手机号码’);
}

 

作者 admin

百度广告效果展示