2016-07-24 42 views
1

我想驗證串是由數字或逗號或者分號:PHP:檢查是否字符串包含字符無法在陣列

有效:1.234 有效:1,234 無效:1.23a 無效:1.2_4

什麼工作:

使用str_split創建一個數組出字符串並使用in_arrayarray(0,1,2,3,4,5,6,7,8,9,',',';')

但這讓我感到迂迴,因爲我必須用數以百萬計的字符串來做到這一點,所以我想確保沒有更有效的方法。

問:有沒有更高效的方法?

回答

4

如果你只需要驗證一個字符串(不消毒或修改它),你可以使用正則表達式。請嘗試以下操作:

if (preg_match('/^[0-9\,\;\.]+$/', $string)) { 
    // ok 
} else { 
    // not ok 
} 
+1

這種方法將返回'FALSE'( 「不OK」)爲輸入'1.234'。雖然OP預計它是有效的:*有效:1.234有效:1,234無效:1.23a無效:1.2_4 * – RomanPerekhrest

+0

這是正確的,我也加了點。 – Nitin

+0

對不起,我忘記了陣列中的點。 – user2113177

2

使用preg_match功能的解決方案:

// using regexp for (numbers OR commas OR semicolons) - as you've required 
function isValid($str) { 
    return (bool) preg_match("/^([0-9.]|,|;)+$/", $str); 
} 

var_dump(isValid("1.234")); // bool(true) 
var_dump(isValid("1.23a")); // bool(false) 
var_dump(isValid("1,234")); // bool(true) 
相關問題