所有我嘗試過的基本 PHP 函式都返回了非預期的結果。我只想檢查某些變數是否只包含數字。例如:當我將我的腳本公開發佈時,我不能要求使用者只能使用數字作為字串或整數。針對這些情況,我編寫了自己的函式,它可以處理其他函式的所有不便之處,並且不依賴於正規表示式。有些人堅信正規函式會降低腳本的執行速度。
編寫此函式的原因
1. is_numeric() 接受像 +0123.45e6 這樣的值(但您預期它不會)。
2. is_int() 不接受 HTML 表單欄位(例如:123),因為它們被視為字串(例如:"123")。
3. ctype_digit() 期望所有數字都是字串(例如:"123"),並且不驗證真正的整數(例如:123)。
4. 可能某些函式會將布林值(例如:true 或 false)解析為 0 或 1,並以這種方式驗證它。
我的函式只接受數字,無論它們是字串格式還是整數格式。
<?php
/**
* 檢查輸入是否僅由數字組成
* @author Tim Boormans <info@directwebsolutions.nl>
* @param $digit
* @return bool
*/
function is_digit($digit) {
if(is_int($digit)) {
return true;
} elseif(is_string($digit)) {
return ctype_digit($digit);
} else {
// 布林值、浮點數和其他
return false;
}
}
?>