可能重複:
Check if a variable is a natural numberPHP的等價JavaScript的parseInt函數?
對面,我需要清理的輸入,並用PHP刪除所有非數字字符剛剛來到。想到自己做一個功能,但是首先想要檢查可能的內置功能,所以我不必花費額外的時間來重新發明輪子。
可能重複:
Check if a variable is a natural numberPHP的等價JavaScript的parseInt函數?
對面,我需要清理的輸入,並用PHP刪除所有非數字字符剛剛來到。想到自己做一個功能,但是首先想要檢查可能的內置功能,所以我不必花費額外的時間來重新發明輪子。
您可以使用:
$string = "90"; //string
$myInt = (int) $string; //parse to int
對不起,但那不完全是我想要的。 '(int)'不會刪除所有的非數字字符,如果字符串中有非數字字符,它將返回'0'。 – think123
@ think123:在javascript中,類型轉換'(int)'和'parseInt()'的作用相同。這是你問的,不是嗎? –
您還可以使用sscanf的(就像在C做)
<?php
$str = "10";
sscanf($str, "%d", $intVal);
$intVal *= 10;
echo $intVal;
?>
輸出:
我會建議使用FILTER_VALIDATE_INT過濾器。
沒有直接等同於pareseInt()
在PHP因爲PHP沒有NaN
數據類型。如果該值無法解析,parseInt()
將產生NaN
。
另外,parseInt()
有基數參數,這些PHP選項都不給你。
雖如此,但如果你想要做的是把一個字符串轉換成整數,那麼有幾種選擇:
$int = (int)$string;
$int = intval($string);
$int = settype($string,'integer');
這三個將在大致相同的方式工作的。可能存在一些邊界情況,其中intval()
與其他兩個不同,但通常它們會將字符串轉換爲int。在沒有NaN
的情況下,如果字符串是非數字並且不能被分析,則它們全部輸出0
(零)。但是這對於大多數DB衛生目的應該是足夠的。
如果你真的想要一個在NaN
上的錯誤,你會得到最接近的是null
。您可以使用filter_var()
得到這樣的:
$value = filter_var(FALSE, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
如果你只是想檢查該字符串的數字,該is_numeric()
功能可以做到這一點:
$bool = is_numeric($string);
然而,返回小數真實,也爲科學記數法,因此在大多數情況下可能並不完美。更好的選擇是ctype_digit()
如果字符串僅由數字返回true:
$bool = ctype_digit($string);
如果這個套裝的非E,總有正則表達式的選項,使用preg_match()
或preg_replace()
,但這些肯定是矯枉過正這種情況。
檢查[php.net/Type Casting](http://php.net/manual/en/language.types.type-juggling.php) – air4x
爲什麼不只是使用intval? – endy