2010-04-16 102 views
2

我創建一個SMS應用的陣列下面的代碼被認爲:格式化手機號碼

  1. 檢查如果移動/細胞數目是長11個字符。
  2. 檢查,如果數字與07

開始。如果這兩個條件都滿足,就應該刪除陣列的數量。

所以下面的數字是有效的:

07123456789,07123456790,07123456791,07123456792,07123456793,07123456794 

但是下面將不會(和需要被刪除):

0801458,07855488,6695522214124514 

    $param["number"] = "07123456789,07123456790,07123456791,07123456792,07123456793,07123456794,0801458,07855488,6695522214124514"; 
    $number = explode(',', $param["number"]); 
foreach($number as $num){ 
    if (!substr_compare($num, "07", 0, 3, false)) { 
     unset($num); 
    } 
    elseif (substr_compare($num, "07", 0, 3, true)) { 
     if(strlen($num) == 11) { 
      $li .= "447" . substr($num, 2) . ','; 
     } 
    } 
} 
$il .= substr($li, 0, strlen($li)-1); 
echo $il; 

// $request = substr($request, 0, strlen($request)-1); 
// return $n; 
} 

我還需要從刪除最後一個逗號結果。

任何幫助將不勝感激。

感謝,

凱爾

+3

我討厭這樣說,但你並沒有真正問了一個問題。 – 2010-04-16 10:13:25

回答

2

你可以建立有效數的新陣列,和內爆()的結尾。

$validNumbers = array(); 
foreach($number as $num){ 
    if (!substr_compare($num, "07", 0, 3, false)) { 
     unset($num); 
    } 
    elseif (substr_compare($num, "07", 0, 3, true)) { 
     if(strlen($num) == 11) { 
      $validNumbers[] = "447" . substr($num, 2); 
     } 
    } 
} 
$il .= implode($validNumbers, ','); 
+0

乾杯,將編輯。 – Armand 2010-04-16 10:20:47

+0

謝謝你的回覆。 似乎已經對它進行了排序。 :) +1給你阿里G和Stereofrog。 貓,我注意到你想說明明顯的大聲笑......這是一個問題。 – 2010-04-16 10:41:27

1

正則表達式應該做的:

preg_grep('/^07\d{9}$/', $number); 
0

您可以將數字轉換爲數組,然後將過濾器應用於它們,然後將它們粘合在一起。就像這樣:

$numbers = "07123456789,07123456790,07123456791,07123456792,07123456793,07123456794,0801458,07855488,6695522214124514"; 
$array = explode(',', $numbers); 
$filteredArray = array_filter($array, create_function('$item', 
    'return strlen($item) == 11 && stripos($item, "07") === 0;' 
)); 
echo implode(",", $filteredArray); 

或者,如果你正在使用PHP 5.3,你可以寫同樣的事情:

$numbers = "07123456789,07123456790,07123456791,07123456792,07123456793,07123456794,0801458,07855488,6695522214124514"; 
$array = explode(',', $numbers); 
$filteredArray = array_filter($array, function($item) { 
    return strlen($item) == 11 && stripos($item, "07") === 0; 
}); 
echo implode(",", $filteredArray); 

這是一個有點漂亮。雙方將輸出:

07123456789,07123456790,07123456791,07123456792,07123456793,07123456794 

延伸閱讀:

PHP.net array_filter()
PHP.net create_function()
PHP.net Anonymous functions