PHP-如何询问字段是否包含数字或+;还是空白?

PHP-如何询问字段是否包含数字或+;还是空白?,php,Php,我的网站表单受到垃圾邮件的重创。我注意到,在“电话”字段中,垃圾邮件机器人总是插入文本而不是数字,因此,如果电话字段不包含以下任何内容,我想在php邮件程序中添加一条if语句来阻止电子邮件: 1) 我希望用户能够将字段留空,因此必须接受空字段 2) 必须包含“数字”或“加号”或“空格” 我将如何用PHP编写这篇文章 谢谢你的帮助 编辑:尽管lol,但检查字段是否包含字母字符要容易得多。我该怎么做 编辑2:已排序。我使用了“if(ctype_alpha($phone)!==false)”正则表达式

我的网站表单受到垃圾邮件的重创。我注意到,在“电话”字段中,垃圾邮件机器人总是插入文本而不是数字,因此,如果电话字段不包含以下任何内容,我想在php邮件程序中添加一条if语句来阻止电子邮件:

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

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

我将如何用PHP编写这篇文章

谢谢你的帮助

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


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

正则表达式可能是最好的方法,尽管一开始并不一定最容易理解。但是,如果您不熟悉正则表达式,那么它绝对是一件值得学习的好东西。我最喜欢的介绍是这个网站:这是一个以交互方式构建正则表达式并实时查看其工作原理的好网站:我相信还有很多其他类似的网站,但我总是会回到这两个网站

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

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

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

首先,你必须使用一些垃圾邮件,例如:令牌,蜜罐,验证码等

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

例如:

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

在许多项目中,allways都可以工作。

您可以用几千种不同的方式编写类似的内容。到目前为止,你尝试了什么?为什么不验证码或“草是什么颜色?”之类的东西?可能是@Sverri的复制品-我对PHP的知识很差,所以什么都没有yet@jimmy-验证码很烦人。我希望填写表格尽可能简单,当然“if(ctype_alpha($phone)!==false)”示例更简单?记住,这一点是为了阻止垃圾邮件的形式提交我一直在接受是的,作为一个快速检查,以防止您的垃圾邮件问题,它应该是罚款。正如斯维里·M·奥尔森(Sverri M.Olsen)在最初的评论中所说,有很多方法可以实现这一点。9位数字和
INT(9)
数据库字段之间没有关系。前者与9位字符串的长度有关,后者与存储整数时使用的字节数有关(因此数字可以有多大)。此外,正则表达式并不能满足提问者的要求。在回答之前仔细阅读问题。是的,我知道,括号中的9是打字错误。我把电话号码的9位数写在字段里。