2015-11-12 188 views
1

我有這個inupt領域檢查用戶只輸入數字,PHP

<p style="font-size: 18px;">Total Bids: <input type="text" class="total_bids" name="total_bids" placeholder="No. of Bids"></p> 

通過獲取其值:

var totalbids = document.getElementsByName('total_bids')[0].value; 

,並通過

$total_bids = PSF::requestGetPOST('totalbids'); 

一切都讓PHP中的價值工作正常,但它應該只取數值,所以我試圖檢查用戶是否只輸入一個數字,如何定義字母範圍s但願我可以設置檢查類似

if($total_bids== 'alphabet range') 
     { 
      return json_encode(array('error' => 'Please enter a valid Number.')); 
     } 
+1

'如果(is_numeric($ numberOrLetters)){...}'??? [php.net文檔](http://php.net/manual/en/function.is-numeric.php) –

+0

這裏是你回答:http://stackoverflow.com/questions/13779209/checking-that-a -value-contains-only-digits-regex-or-no – swidmann

回答

1

首先,您可以通過將其類型定義爲type="number"來禁止該人輸入除<input../>之外的任何數字。

顯然,人們可以繞過它,所以你仍然需要在後端檢查它,你需要使用像is_numeric()這樣的函數。

2

您可以使用正則表達式和\d表達。 \d只匹配數字。

1

您可以通過is_numeric

if(!is_numeric($total_bids)) 
{ 
    return json_encode(array('error' => 'Please enter a valid Number.')); 
} 

還要檢查,如果你想要做任何特殊的檢查,您可以通過preg_match使用正則表達式,例如:

if(!preg_match('~^[\d\.]$~', $total_bids)) 
{ 
    return json_encode(array('error' => 'Please enter a valid Number.')); 
} 

正則表達式更加靈活,您可以添加您自己的規則檢查通過regexpm但is_numeric檢查更快然後正則表達式檢查

1

根據您的輸入,如果你只需要數字然後嘗試ctype_digit

$strings = array('1820.20', '10002', 'wsl!12');//input with quotes is preferable. 
foreach ($strings as $testcase) { 
    if (ctype_digit($testcase)) { 
     echo "The string $testcase consists of all digits.\n"; 
    } else { 
     echo "The string $testcase does not consist of all digits.\n"; 
    } 
} 

在這裏看到:http://php.net/ctype_digit

+0

這是一個不好的例子,因爲ctype_digit(43)將返回false,它只會用於字符串 –

+0

@AntonOhorodnyk它應該被字符串引用。是檢查數字的最佳選擇。對於您的信息,op的輸入是文本類型。 –

+0

更好地使用is_numeric來解決這個問題 –

1
if(preg_match ("/[^0-9]/", $total_bids)){ 
    return json_encode(array('error' => 'Please enter a valid Number.')); 
}