2011-01-16 4 views
4

Ich versuche immer noch, mich um die Funktion preg_replace in PHP zu kümmern. Wie formatiere ich die folgenden Handynummern in einen Standard 27xxxxxxxxx für Handynummern?South African Handynummer Formatierung

ZB:

083-123-4678 sollte 27831234567 +278312345678 27831234567

Die Startnummern müssen alle entweder 081 sein sollte, 082, 083, 084 oder 071, 072, 073, 074

+0

>> 081, 082, 083, 084 oder 071, 072, 073, 074 Unter der Annahme, nur mit * ab [7 | 8] [1 | 2 | 3 | 4] ist eine dumme Idee, weil mit ATA wirst du neue Nummern haben. Auch gibt es 078, die Sie nicht versorgen. – drubin

Antwort

1

Dies sollte es tun:

function Number_SA($number) 
{ 
    $number = preg_replace(array('~[^0-9]~', '~^27~'), '', $number); 

    if (preg_match('~^(?:07[1234]|08[1234])~', $number) > 0) 
    { 
     return sprintf('%d%s', 27, $number); 
    } 

    return false; 
} 

Verbrauch:

var_dump(Number_SA('083-123-4678')); // 27831234567 
var_dump(Number_SA('085-123-4678')); // false 
var_dump(Number_SA('+278312345678')); // false (doesn't start with 083) 
2
function Number_SA($numbers) 
{ 
$number = preg_replace(array('~[^0-9]~', '~^27~'), '', $numbers); 

    if (preg_match('~^(?:07[1234])~', $number) > 0) 
    { 
     $output= sprintf('%d%s', 27, $number);if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;} 
     else{return $output;} 

    } 
    elseif (preg_match('~^(?:08[123458])~', $number) > 0) 
    { 
     $output= sprintf('%d%s', 27, $number);if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;} 
     else{return $output;} 

    } 
    elseif (preg_match('~^(?:01[123468])~', $number) > 0) 
    { 
     $output= sprintf('%d%s', 27, $number); 
     if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;} 
     else{return $output;} 

    } 
    elseif (preg_match('~^(?:02[1])~', $number) > 0) 
    { 
     $output= sprintf('%d%s', 27, $number); 

     if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;} 
     else{return $output;} 

    }  
    elseif (preg_match('~^(?:03[1])~', $number) > 0) 
    { 
     $output= sprintf('%d%s', 27, $number); 
     if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;} 
     else{return $output;} 

    } 
    elseif (preg_match('~^(?:04[0134])~', $number) > 0) 
    { 
     $output= sprintf('%d%s', 27, $number); 
     if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;} 
     else{return $output;} 

    } 
    elseif (preg_match('~^(?:05[17])~', $number) > 0) 
    { 
     $output= sprintf('%d%s', 27, $number); 
     if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;} 
     else{return $output;} 

    } 
    else{return false;} 

return false; 
} 


$phoneno=array(); 
array_push($phoneno,(Number_SA('083-313-2605'))); //true 
array_push($phoneno,(Number_SA('067-313-26055')));//false 
array_push($phoneno,(Number_SA('021-313-260'))); //false 
array_push($phoneno,(Number_SA('0211-313-8903')));//true 



foreach ($phoneno as $number){ 
if($number == ""){ echo "Phone Number is null"."<br/>";} 
else{ echo "This is valid: ".$number."<br/>";}}