我如何检查并查看用户是否仅使用PHP输入数字且至少4个数字?
答案 0 :(得分:6)
Mark Byers的建议很好,但这是另一种方式:
$valid = ctype_digit($number) && strlen($number) >= 4;
答案 1 :(得分:5)
您可以使用正则表达式:
/^\d{4,}$/
使用示例:
$s = "7325";
if (preg_match('/^\d{4,}$/', $s)) {
echo "matches";
}
答案 2 :(得分:1)
<?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
。
答案 3 :(得分:0)
您是否有任何示例代码可以开始?
要严格回答您的问题,您可以使用if(preg_match('/^\d{4,}$/', $input)...
等正则表达式。
但是这里需要考虑的还有很多:你需要考虑验证和过滤(你最好保留两个不同的问题)。如果你正在严格检查一个整数,那么我认为你是安全的SQL注入,XSS等,但你真的需要处理这些问题,因为你迟早需要过滤&安培;验证除简单整数之外的其他内容。
答案 4 :(得分:0)
你应该始终使用最有效的方式来做到这一点
if ( is_numeric($imput) && isset($input[3]) )
{
// your code
}
isset()是一种语言结构,总是比strlen()快。
isset($ input [n-1])告诉您字符串(通过表单的数据总是字符串)是否至少有n长。
is_numeric()检查它是否是有效的num字符串。
我认为它比ctype_digit()&amp;&amp;更好strlen的()。