php电子邮件清理和验证不起作用

php电子邮件清理和验证不起作用,php,email-validation,phone-number,filter-var,Php,Email Validation,Phone Number,Filter Var,我有这个php代码 if(filter_var($_POST['username'], FILTER_SANITIZE_EMAIL) !== false && filter_var($_POST['username'], FILTER_VALIDATE_EMAIL) !== false) { echo 'it is mail'; }else{ echo 'is is phone';

我有这个php代码

if(filter_var($_POST['username'], FILTER_SANITIZE_EMAIL) !== false && filter_var($_POST['username'], FILTER_VALIDATE_EMAIL) !== false) {
                echo 'it is mail';
            }else{
                echo 'is is phone';
            }
当我像这样发送post数据时

example@bla.com
+995216846121
它在写,它是邮件。但是当我像这样发送数据时

example@bla.com
+995216846121
然后它写的也是邮件

怎么了? 请帮帮我


我需要检查客户是否添加了邮件或电话号码。

我用is\u numeric()又添加了一个检查,现在一切都好了。
谢谢大家

筛选\u验证\u电子邮件正确拒绝此处的电话号码。尝试调试您的系统:对这两个选项执行
var\u转储(filter\u var(…)
,并确认它们返回正确的true/false。现在我尝试var\u转储(filter\u var($\u POST['username',filter\u SANITIZE\u EMAIL));在这两种情况下,它都返回字符串(这里是长度),而同一个字符串有问题。我可以用类似于(int)$\u POST['username']的整数转换这个字符串,然后检查它吗?或者类似的东西?你确定这段代码中有错误吗。对我来说,它工作得很好是的,我肯定。它不起作用。我给你我的代码我是如何检查的。sanitize只是清理并返回字符串的剩余部分。validate返回true/false…另一个选项是regex。然后你可以为电子邮件和电话定义自己的模式。我的数学课正在做我需要的事情。因此,如果我发送数据,例如+124654654,它将返回true;我写了另一个选项,而不是唯一的选项如果您可以确保电话号码始终采用这种格式,那么您的解决方案就可以了。但是如果有人输入“+12 123123-34”是数字,那么由于空格和“-”的原因,将返回
false
。因此,你能给我一个带有减号、空格和其他字符的正则表达式代码吗?在这种情况下,用户可以使用的字符可能是user add+(995)5(58)55-55或我不知道。你能给我这个正则表达式吗?所以我确信用户不会再写任何东西了。我只会在开始时用str_替换[0-9]中的任何东西。