2010-10-30 12 views
6

Come posso convalidare un numero di cellulare sudafricano? Il numero deve iniziare con il codice del paese come +27 e avere una lunghezza massima di 11 cifre - totale 12 con il segno "+".Convalida il numero di cellulare del Sudafrica

+1

Non dimenticare che i numeri futuri potrebbero essere più lunghi. –

risposta

6

Prova un'espressione regolare come:

^\+27[0-9]{9}$ 

Tradotto in PHP che sarebbe:

if(preg_match("/^\+27[0-9]{9}$/", $phoneNumber)){ 
    echo "Valid number"; 
} else { 
    echo "Invalid number"; 
} 
+1

Si prega di NON usare questo. Ogni sito che convalida male i numeri di telefono mi fa partire subito. Consenti trattini e spazi, non forzare il +. –

+0

@Cononatus: il numero deve essere convalidato in queste condizioni: 'Il numero deve iniziare con il codice del paese come +27 e avere una lunghezza massima di 11 cifre - totale 12 con il segno "+". Consentendo spazi bianchi e trattini renderà il numero più lungo di 12 caratteri. – Harmen

+0

@Coronatus - Non vedo il problema nel forzare gli utenti a digitare un numero telefonico valido - proprio come un nome utente o una e-mail validi. Controllare l'input degli utenti è una pratica abbastanza buona quando non vuoi proteggere la tua applicazione. – Repox

0
$number = preg_replace('/[^0-9]/', '', $number); 
if ((substr($number, 0, 2) != '27') || strlen($number) != 11) 
{ 
    return false; 
} 
// else valid 
+0

Se togli prima tutti i numeri non numerati, è valido anche un 'numero di telefono' come 27abc554def23565' ... – Harmen

1

Prendere l'ingresso e la striscia fuori tutto ciò che non è un numero.

// rm all but Numbers 
$input = 'abC#'; 
$output = preg_replace('#[^0-9]#', '', $input); 
echo($output); 

Contare le cifre rimanenti.

Se è lungo 9 cifre, anteporre "+27"

Se è di 11 cifre lungo anteporre un "+"

Se è di 10 cifre lungo o inferiore a 9, allora è presumibilmente non è un formato valido per il numero di telefono?

Problemi correlati