is_numeric intval, ctype__digit .. onlara güvenebilirsiniz?
ya da ben regex kullanmak zorunda mı?
function isNum($str) {
return (preg_match("/^[0-9]+$/", $str));
}
Siz ne düşünüyorsunuz? Ben aptal mıyım?
Tüm is_numeric intval ve ctype_digit çok farklı şeyler.
(Kayar nokta veya tamsayı değeri ise true yani) değişkenin içeriğinin sayısal ise is_numeric söyleyecektir.
intval bir tamsayı değeri sayı bir dize dönüştürmek için çalışır
Bir dize sayısal karakter ama hiçbir şey (siz IsNum işlev olarak aynı kontrol yapacaktır) içeriyorsa ctype_digit söyleyecektir.
En iyi yaklaşım is_numeric doğrudur ve sonra setType hatları ($ myvalue, 'integer') veya intval ($ myvalue) boyunca bir şey kullanmak olmadığını kontrol etmek muhtemelen;
Ayrıca yeni filter functions kullanabilirsiniz.
if (!$var = filter_var($var, FILTER_VALIDATE_INT)) {
die('Not an int!');
}
echo "Var has the value $var.\n";
Vb cli, web istemcisi, girdi filtreleme olduğunda kullanılır List of filters here.
Siz fonksiyonların iki tür adlandırılmış:
A Validator checks if the given value has the given characteristics and returns either true or false.
is_numeric
, the ctype_*
functions and your isNum
function are validating functions as they just tell you if a value is valid or not.
A Filter changes the given value in such way that the new value has the given characteristics and thus will be valid.
intval
and the filter_*
functions are filtering functions as they always will return valid values that would pass a validator.
PHP konusunda uzman değilim, ama bu fonksiyonların bir somut bir anlayış kazanmak için bir veri güdümlü birim test yazıyorum kabul var. Eğer güvenilirliği hakkında belirsiz ve dokümantasyon belirsiz ise, o zaman hiçbir şey permütasyon ve beklenen çıkış 1000 test edebilirsiniz bir birim testi yener.
Gerçekten Hatta o kadar ben sadece bazı özel kenar durumlarda test etmek istediğinizi düşünün olarak gitmek zorunda değilsiniz. Sizin programlama becerileri ve derleyici burada en iyi arkadaşımsın. Yazdığınız programı onaylamak veya şüpheleri inkar edecek ya.
Ayrıca, her yöntem ne kadar sürer izlemek ve daha performanslı olduğunu görebilirsiniz bir bonus atmak.
Sadece bir düşünce.