2015-08-16 56 views

回答

2

你可以通過使用正則表達式,像這樣:

function checkNumber($number) { 
    return !!preg_match('/^09\d{8}$/', "$number"); 
} 

或用簡單的字符串匹配:

function checkNumber($number) { 
    $number = trim("$number"); 
    if (strlen($number) != 10) 
     return false; 

    if (substr($number, 0, 2) != "09") 
     return false; 

    return trim($number, "0..9") == ""; 
} 

兩種方法都給出相同的輸出:

var_dump([$number = '0912345678', checkNumber($number)]); 
var_dump([$number = '9', checkNumber($number)]); 
var_dump([$number = '091234567', checkNumber($number)]); 
var_dump([$number = '09123456788', checkNumber($number)]); 

// array(2) { 
// [0]=> 
// string(10) "0912345678" 
// [1]=> 
// bool(true) 
// } 
// array(2) { 
// [0]=> 
// string(10) "9" 
// [1]=> 
// bool(false) 
// } 
// array(2) { 
// [0]=> 
// string(9) "091234567" 
// [1]=> 
// bool(false) 
// } 
// array(2) { 
// [0]=> 
// string(11) "09123456788" 
// [1]=> 
// bool(false) 
// } 

此外,正則表達式的方法更簡單和靈活,恕我直言。

+1

請添加一些關於您的代碼如何解決問題的信息。 – Koopakiller

+0

非常感謝。很有幫助。我也試過下面的代碼,它也工作。 preg_match(「/ ^([09] {2})([0-9] {9})$ /」,$ cellNum) –

+0

@RaminRabii,但是你的代碼給出了11位數的「true」以'09'**和**'90'開頭,因爲'[09] {2}'意思是「0和9的兩位數字,以任何順序」 – ankhzet