Bir kullanıcı sadece sayıları girer ve en az 4 sayı uzunluğunda PHP kullanarak olup olmadığını nasıl kontrol ve görüyorsunuz?
<?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
Note: Tomalak en @ sayılar 0 ile başlayan çalışmıyor bu yüzden hak değildir
intval(0000) o true olmalıdır, false olarak değerlendirildiğinden, Edit: @ kiethjgrant çözeltisi uzaklaştırılmıştır.
Başlamak için herhangi bir örnek kod var mı?
Kesinlikle sizin sorunuzu yanıtlamak için, if(preg_match('/^\d{4,}$/', $input)... gibi bir regex kullanabilirsiniz.
Ama burada dikkat etmeniz gereken bir şey daha var: Eğer doğrulama ve filtreleme hem de dikkate almak gerekir (ve iki ayrı sorunları tutmak için en iyi konum). Eğer kesinlikle bir tamsayı için kontrol ediyorsanız, o zaman, vb SQL enjeksiyon, XSS, güvenli konum varsayalım, ama er ya da geç filtrelemek için ihtiyacımız olacak, çünkü gerçekten, bu konularda bir kolu olması gerekir & Basit bir tamsayı dışında bir şey doğrulamak.
Her zaman bunu yapmak için en verimli şekilde kullanmak gerekir
if ( is_numeric($imput) && isset($input[3]) )
{
// your code
}
isset () her zaman strlen daha hızlı bir dil oluşumu, (olan).
isset ($ girdi [n-1]) string (şeklinde geçer veriler her zaman string) en az n uzun olup olmadığını söyler.
is_numeric () geçerli bir num dizedir denetler.
i ctype_digit daha iyi olduğunu düşünüyorum () && strlen ().