I was wondering, what would be the best way to validate an integer. I'd like this to work with strings as well, so I could to something like
(String) 00003 -> (int) 3 (geçerli)
(String) -027 -> (int) -27 (geçerli)
(Int) 33 -> (int) 33 (geçerli)
(String) '33a '-> (YANLIŞ) (geçersiz)
Ben şimdiye kadar gitmek ettik budur:
function parseInt($int){
//If $int already is integer, return it
if(is_int($int)){return $int;}
//If not, convert it to string
$int=(string)$int;
//If we have '+' or '-' at the beginning of the string, remove them
$validate = ($int[0] === '-' || $int[0] === '+')?substr($int, 1):$int;
//If $validate matches pattern 0-9 convert $int to integer and return it
//otherwise return false
return preg_match('/^[0-9]+$/', $validate)?(int)$int:FALSE;
}
Bildiğim kadarıyla test gibi, bu fonksiyon çalışır, ancak beceriksiz bir çözüm gibi görünüyor.
Fonksiyonunun bu tür yazmak için daha iyi bir yolu var mı. Ben de denedim
filter_var($foo, FILTER_VALIDATE_INT);
ama ',' '0003 gibi değerleri kabul olmaz -0 'vb