如何检查并查看用户是否只输入数字,并且使用PHP至少有4个数字?PHP验证问题
PHP验证问题
回答
你可以使用正则表达式:
/^\d{4,}$/
用法示例:
$s = "7325";
if (preg_match('/^\d{4,}$/', $s)) {
echo "matches";
}
你可以使用'preg_match()'检查你可以使用' – 2010-04-08 20:52:13
@Alexandre Jasmin,谢谢:) – TaG 2010-04-08 20:53:52
@Alexandre:好点 - 我已经添加了一些示例代码。 – 2010-04-08 20:55:46
你有任何示例代码开始吗?
要严格回答你的问题,你可以使用像if(preg_match('/^\d{4,}$/', $input)...
这样的正则表达式。
但是这里还有很多需要考虑的事情:您需要考虑验证和过滤(并且最好保留两个单独的问题)。如果你严格检查一个整数,那么我认为你可以安全地使用SQL注入,XSS等,但是你真的需要处理这些问题,因为迟早你需要过滤&验证除简单整数以外的其他内容。
intval('0000')为0,即使它是四位数字,并且长度为4或更大,它将对您无效。 – notJim 2010-04-08 20:56:51
马克·拜尔斯的建议是很好的,但这里的另一种方式:
$valid = ctype_digit($number) && strlen($number) >= 4;
我喜欢这个,因为(如Mark的)'0123'符合条件,并且不使用正则表达式引擎。 – webbiedave 2010-04-08 20:58:11
@notJim,你赢得了我的投票,因为你的最高性能:) – 2010-04-08 21:12:46
ctype_digit()& &的strlen()获得
<?php
function benchmark($callback){
echo sprintf('%-30s: ', $callback);
$t = microtime(true);
foreach(range(1, 10000) as $n){
call_user_func($callback);
}
echo (microtime(true)-$t)."\n";
}
function mark_byers_preg_match(){
$s = "7325";
preg_match('/^\d{4,}$/', $s);
}
function notjim_ctype_digit_strlen(){
$number = 7325;
ctype_digit($number) && strlen($number) >= 4;
}
function tomalak_intval_broken(){
$check = 7325;
intval($check) == $check && $check >= 1000 && $check <= 9999;
}
benchmark('mark_byers_preg_match');
benchmark('notjim_ctype_digit_strlen');
benchmark('tomalak_intval_broken');
?>
结果
mark_byers_preg_match : 0.029040098190308
notjim_ctype_digit_strlen : 0.026585817337036
tomalak_intval_broken : 0.019872903823853
注意: @ Tomalak's没有与开始0
数字将不起作用,因此不符合
编辑: @除去kiethjgrant的解决方案,因为intval(0000)
评估为false
当它应该是true
。
你应该总是用最有效的方式做到这一点
if (is_numeric($imput) && isset($input[3]))
{
// your code
}
isset()函数是一个语言结构,它总是快于strlen的()。 ($ input [n-1])告诉你string(通过form的数据总是字符串)是否至少有n个long。
is_numeric()检查它是一个有效的数字字符串。
我认为它比ctype_digit()更好& & strlen()。
is_numeric验证更多,然后只是数字。 – OIS 2010-04-08 23:28:31
- 1. PHP验证问题
- 2. PHP验证问题
- 3. PHP表单验证问题
- 4. JQuery和PHP验证问题?
- 5. 登录问题验证PHP
- 6. 问题验证链接-php
- 7. PHP tinymce,验证问题
- 8. PHP FONT_SIZE验证码问题
- 9. PHP和MySQL验证问题
- 10. PHP表单验证问题?
- 11. php验证脚本问题
- 12. 验证码和标题有问题(PHP)
- 13. 验证码验证问题
- 14. 验证问题
- 15. 验证问题
- 16. 验证问题
- 17. 验证问题
- 18. 验证问题
- 19. 验证问题?
- 20. 验证问题
- 21. PHP表单验证提交问题?
- 22. PHP表单验证重播问题
- 23. PHP表单数据验证问题
- 24. 问题与蛋糕PHP移动验证
- 25. php/mysql表单验证问题
- 26. 用PHP验证表格的问题
- 27. php mysql身份验证问题
- 28. 问题验证YouTube网址用PHP
- 29. PHP curl身份验证问题
- 30. 蛋糕php验证码问题
请先尝试编写代码; http://www.php.net是一个很好的参考。 – 2010-04-08 20:50:24
@TaG,这似乎有点不受欢迎。 – 2010-04-08 20:56:39
RTFQ人!由于某种原因,对这个问题的回答很多。 – notJim 2010-04-08 20:57:21