簡體   English   中英

如何檢查從文本輸入返回的字符串值是否為整數

[英]How to check if string value returned from text input is integer

我有一個用戶搜索關鍵字的表單。

我想檢查用戶是否提交了一個數字(整數)而不是關鍵字。

我用這個:

$keyword = $_REQUEST["keyword"];

if (is_int($keyword)) {
  echo 'true';
} else {
  echo 'false';
}

但即使提交的值是整數,它也始終返回false。

is_int檢查變量是否為整數類型 你擁有的是一個字符串,其字符碰巧代表一個整數。

嘗試:

if (is_numeric($keyword) && is_int(0+$keyword))

0+將隱式地將以下內容轉換為數字類型,因此如果可能,您將最終得到字符串的數值。 首先調用is_numeric確保您不會轉換垃圾。

is_int()用於類型安全比較,因此從瀏覽器接收的字符串始終計算為false

如果你真的需要檢查一個變量是否是一個integer你可以使用這個方便的函數:

function str_is_int($number) {
    // compare explicit conversion to original and check for maximum INT size
    return ( (int)$number == $number && $number <= PHP_INT_MAX );  
    // will return false for "123,4" or "123.20"
    // will return true for "123", "-123", "-123,0" or "123.0"
}

注意:您應該將PHP_INT_MAX替換為目標系統的最大整數大小 - 例如您的數據庫。


is_int()的文檔中,您可以閱讀:

is_int - 查找變量的類型是否為整數

bool is_int ( mixed $var )

注意:

要測試變量是數字還是數字字符串(例如表單輸入,始終是字符串),必須使用is_numeric()

例:

<?php
if (is_int(23)) {
    echo "is integer\n";
} else {
    echo "is not an integer\n";
}
var_dump(is_int(23));
var_dump(is_int("23"));
var_dump(is_int(23.5));
var_dump(is_int(true));
?>

上面的例子將輸出:

is integer
bool(true)
bool(false)
bool(false)
bool(false)

我認為ctype_digit()將適用於您的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM