cep telefonu numaralarının bir dizi biçimlendirme

3 Cevap php

Ben aşağıdaki kod gerekiyordu bir SMS uygulaması oluşturma:

  1. cep telefonu / cep numarası 11 karakterden uzun olup olmadığını kontrol edin.
  2. numarası 07 ile başlar olmadığını kontrol edin.

Bu koşulların her ikisi karşılandığında, bu diziden numara çıkarmak gerekir.

Yani şu sayılar geçerli olacaktır:

07123456789,07123456790,07123456791,07123456792,07123456793,07123456794

Ancak şu (ve kaldırılması gerekir) olmaz:

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;
}

Ben de sonuçtan son virgülü kaldırmak gerekir.

Herhangi bir yardım takdir edilecektir.

Teşekkürler,

Kyle

3 Cevap

Sen geçerli sayılar yeni bir dizi oluşturmak ve sonunda () olduğunu implode olabilir.

$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, ',');

regex yapmalıdır:

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

Sen, bir dizi numaralar dönüştürmek onlar için bir filtre uygulamak ve onları bir araya tekrar tutkal olabilir. Bu gibi:

$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 kullanıyorsanız ya, siz aynı şeyi yazabilirsiniz

$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);

Hangi biraz güzel olduğunu. Hem irade çıktı:

07123456789,07123456790,07123456791,07123456792,07123456793,07123456794

Daha fazla okuma:

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