如何檢查並查看用戶是否只輸入數字,並且使用PHP至少有4個數字?PHP驗證問題
PHP驗證問題
回答
你可以使用正則表達式:
/^\d{4,}$/
用法示例:
$s = "7325";
if (preg_match('/^\d{4,}$/', $s)) {
echo "matches";
}
你可以使用'preg_match()'檢查你可以使用' – 2010-04-08 20:52:13
@Alexandre Jasmin,謝謝:) – TaG 2010-04-08 20:53:52
@Alexandre:好點 - 我已經添加了一些示例代碼。 – 2010-04-08 20:55:46
你有任何示例代碼開始嗎?
要嚴格回答你的問題,你可以使用像if(preg_match('/^\d{4,}$/', $input)...
這樣的正則表達式。
但是這裏還有很多需要考慮的事情:您需要考慮驗證和過濾(並且最好保留兩個單獨的問題)。如果你嚴格檢查一個整數,那麼我認爲你可以安全地使用SQL注入,XSS等,但是你真的需要處理這些問題,因爲遲早你需要過濾&驗證除簡單整數以外的其他內容。
intval('0000')爲0,即使它是四位數字,並且長度爲4或更大,它將對您無效。 – notJim 2010-04-08 20:56:51
馬克·拜爾斯的建議是很好的,但這裏的另一種方式:
$valid = ctype_digit($number) && strlen($number) >= 4;
我喜歡這個,因爲(如Mark的)'0123'符合條件,並且不使用正則表達式引擎。 – webbiedave 2010-04-08 20:58:11
@notJim,你贏得了我的投票,因爲你的最高性能:) – 2010-04-08 21:12:46
ctype_digit()& &的strlen()獲得
<?php
function benchmark($callback){
echo sprintf('%-30s: ', $callback);
$t = microtime(true);
foreach(range(1, 10000) as $n){
call_user_func($callback);
}
echo (microtime(true)-$t)."\n";
}
function mark_byers_preg_match(){
$s = "7325";
preg_match('/^\d{4,}$/', $s);
}
function notjim_ctype_digit_strlen(){
$number = 7325;
ctype_digit($number) && strlen($number) >= 4;
}
function tomalak_intval_broken(){
$check = 7325;
intval($check) == $check && $check >= 1000 && $check <= 9999;
}
benchmark('mark_byers_preg_match');
benchmark('notjim_ctype_digit_strlen');
benchmark('tomalak_intval_broken');
?>
結果
mark_byers_preg_match : 0.029040098190308
notjim_ctype_digit_strlen : 0.026585817337036
tomalak_intval_broken : 0.019872903823853
注意: @ Tomalak's沒有與開始0
數字將不起作用,因此不符合
編輯: @除去kiethjgrant的解決方案,因爲intval(0000)
評估爲false
當它應該是true
。
你應該總是用最有效的方式做到這一點
if (is_numeric($imput) && isset($input[3]))
{
// your code
}
isset()函數是一個語言結構,它總是快於strlen的()。 ($ input [n-1])告訴你string(通過form的數據總是字符串)是否至少有n個long。
is_numeric()檢查它是一個有效的數字字符串。
我認爲它比ctype_digit()更好& & strlen()。
is_numeric驗證更多,然後只是數字。 – OIS 2010-04-08 23:28:31
- 1. PHP驗證問題
- 2. PHP驗證問題
- 3. PHP表單驗證問題
- 4. JQuery和PHP驗證問題?
- 5. 登錄問題驗證PHP
- 6. 問題驗證鏈接-php
- 7. PHP tinymce,驗證問題
- 8. PHP FONT_SIZE驗證碼問題
- 9. PHP和MySQL驗證問題
- 10. PHP表單驗證問題?
- 11. php驗證腳本問題
- 12. 驗證碼和標題有問題(PHP)
- 13. 驗證碼驗證問題
- 14. 驗證問題
- 15. 驗證問題
- 16. 驗證問題
- 17. 驗證問題
- 18. 驗證問題
- 19. 驗證問題?
- 20. 驗證問題
- 21. PHP表單驗證提交問題?
- 22. PHP表單驗證重播問題
- 23. PHP表單數據驗證問題
- 24. 問題與蛋糕PHP移動驗證
- 25. php/mysql表單驗證問題
- 26. 用PHP驗證表格的問題
- 27. php mysql身份驗證問題
- 28. 問題驗證YouTube網址用PHP
- 29. PHP curl身份驗證問題
- 30. 蛋糕php驗證碼問題
請先嚐試編寫代碼; http://www.php.net是一個很好的參考。 – 2010-04-08 20:50:24
@TaG,這似乎有點不受歡迎。 – 2010-04-08 20:56:39
RTFQ人!由於某種原因,對這個問題的回答很多。 – notJim 2010-04-08 20:57:21