PHP - 如何询问字段是否包含数字或+或空格或空的?
我的网站表单正在受到垃圾邮件的攻击。我注意到在“手机”字段垃圾邮件机器人总是插入文本,而不是一个数字,所以我想添加一个if语句给php邮件程序阻止电子邮件,如果电话字段不包含任何以下内容:PHP - 如何询问字段是否包含数字或+或空格或空的?
1)我希望用户能够将字段留空,因此必须接受空字段。
2)必须包含“数字”或“加号”或“空格”
如何将我写这篇文章的PHP?
任何帮助表示赞赏
编辑:只是笑,虽然它会更容易只检查该字段包含字母字符。我将如何做到这一点?
EDIT2:Sorted。我用“if(ctype_alpha($ phone)!== false)”
正则表达式可能是最好的方法,尽管不一定最容易理解。但是如果你不熟悉正则表达式,那么学习肯定是一件好事。我最喜欢的介绍是这个网站:http://www.zytrax.com/tech/web/regex.htm这是一个交互式构建正则表达式并观察它如何实时运行的好网站:http://www.regexr.com/我确定有很多其他类似的网站,但这些都是我总是回头去看的。
如果你四处搜寻正则表达式的解决方案,你会发现无数的可能性和变化。我的个人建议是保持简单。我会从考虑如何存储电话号码数据开始。我通常只保留数字,所以我会先简化它,先删除那些“允许”字符,然后检查剩下的部分是否只是数字。
$phone = str_replace(Array('+', ' ', '(', ')'), '', $phone);
这将用空字符串替换所有的加号,空格和括号(即删除它们)。然后你可以检查字符串是否是数字,如果它是存储它,否则打印/返回一个错误。
if (!is_numeric($phone))
// stop processing and output an error
,首先必须使用例如一些spamblock:令牌,蜜罐,验证码等
在我国,移动或本地电话号码,只包含无国家代码是XX + 9digits。所以我在db中创建INT(10)字段。提交表单后,删除没有数字的一切。
例如:
$phoneNumber = (int) substr(preg_replace('#[^\d]+#', '', $_POST['phone_numer']), 0, 9);
在许多项目工程百达。
9位数字与“INT(9)”数据库字段之间没有关系。前者与9位数字串的长度有关,后者与存储整数时使用多少字节(因此数字有多大)有关。另外,你的正则表达式不会做提问者想要的东西。在回答之前,请正确阅读问题。 – 2014-10-20 10:23:11
是的,我知道,括号中的9是错字。我想到了9位数字的电话号码并在现场写下来。 – 2014-10-20 10:27:24
你可以用几千种不同的方式写这样的东西。你试过什么了? – 2014-10-20 07:35:49
为什么不是验证码或“什么颜色是草?”之类的事情? – jimmy 2014-10-20 07:36:55
可能重复[如何检查一个字符串是否包含特定单词?](http://*.com/questions/4366730/how-to-check-if-a-string-contains-specific-words) – 2014-10-20 07:41:37