PHP-如何询问字段是否包含数字、+、空格或空


PHP - How to ask if field contains number or + or spaces or empty?

我的网站表单被垃圾邮件淹没了。我注意到在"电话"字段中,垃圾邮件机器人总是插入文本而不是数字,所以如果电话字段不包含以下任何内容,我想向阻止电子邮件的php邮件程序添加if语句:

1) 我希望用户能够将字段留空,因此必须接受空字段。

2) 必须包含"数字"或"加号"或"空格"

我该如何用PHP写这篇文章?

感谢提供的任何帮助

编辑:尽管哈哈,检查字段是否包含字母字符会容易得多。我该怎么做?

编辑2:已排序。我使用了"if(ctype_alpha($phone)!==false)"

正则表达式可能是最好的方法,尽管一开始不一定是最容易理解的。但是,如果你不熟悉正则表达式,那么学习它们绝对是一件好事。我最喜欢的介绍是这个网站:http://www.zytrax.com/tech/web/regex.htm这是一个很好的网站,可以交互式地构建regex并查看它是如何实时工作的:http://www.regexr.com/我相信还有很多其他类似的网站,但这是我经常去的两个。

如果你四处寻找正则表达式的解决方案,你会发现无数的可能性和变化。我个人的建议是保持简单。我首先要考虑如何存储电话号码数据。我通常只保留数字,所以我会简化它,首先删除那些"允许"的字符,然后检查剩下的是否只是数字。

$phone = str_replace(Array('+', ' ', '(', ')'), '', $phone);

这将用一个空字符串替换所有加号、空格和括号(即删除它们)。然后,您可以检查字符串是否为数字,如果是存储字符串,则打印/返回错误。

if (!is_numeric($phone))
    // stop processing and output an error

首先,您必须使用一些垃圾邮件块,例如:代币、蜜罐、captcha等。

在我的国家/地区,手机或本地电话号码只包含9位数字,没有国家/地区代码+XX。所以我在db中创建了INT(10)字段。提交表单后,删除所有没有数字的内容。

例如:

$phoneNumber = (int) substr( preg_replace( '#[^'d]+#', '', $_POST['phone_numer'] ), 0, 9 );

在许多项目中,所有方法都有效。