Como detectar si un número de teléfono fijo es correcto

Código PHP

PHP – Validaciones – preg_match phone

Función que nos indica si un número de teléfono es correcto y pertenece a un fijo español, se detecta los primeros números para determinar la provincia.

El formato español contempla una longitud de 9 números.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/**
* Class HelperValidate
*/
abstract class HelperValidate
{
/**
* Valida si es un número de telefono fijo
*
* @param string $tel
*
* @return bool
*/
public static function isPhoneFix($tel)
{
$tel = trim($tel);
$ok_1 = (preg_match("/^[0-9]+$/", $tel) &&
strlen($tel) == 9);
$codigo = intval(substr($tel, 0, 2));
switch ($codigo) {
case 91: // -- Madrid
case 93: // -- Barcelona
case 94: // -- Vizcaya
case 95: // -- Sevilla
case 96: // -- Alicante
case 98: // -- Asturias
$ok_provincia_2 = true;
break;
default:
$ok_provincia_2 = false;
break;
}
$codigo = intval(substr($tel, 0, 3));
switch ($codigo) {
case 923: // -- Salamanca
case 973: // -- Lleida
case 921: // -- Segovia
case 926: // -- Ciudad Real
case 975: // -- Soria
case 977: // -- Tarragona
case 920: // -- Avila
case 922: // -- Tenerife
case 924: // -- Badajoz
case 972: // -- Girona
case 978: // -- Teruel
case 971: // -- Baleares
case 925: // -- Toledo
case 979: // -- Palencia
case 927: // -- Cáceres
case 928: // -- Palmas, Las
case 974: // -- Huesca
case 976: // -- Zaragoza
$ok_provincia_3 = true;
break;
default:
$ok_provincia_3 = false;
break;
}
return (($ok_provincia_2 || $ok_provincia_3) &&
$ok_1);
}
}
/** * Class HelperValidate */ abstract class HelperValidate { /** * Valida si es un número de telefono fijo * * @param string $tel * * @return bool */ public static function isPhoneFix($tel) { $tel = trim($tel); $ok_1 = (preg_match("/^[0-9]+$/", $tel) && strlen($tel) == 9); $codigo = intval(substr($tel, 0, 2)); switch ($codigo) { case 91: // -- Madrid case 93: // -- Barcelona case 94: // -- Vizcaya case 95: // -- Sevilla case 96: // -- Alicante case 98: // -- Asturias $ok_provincia_2 = true; break; default: $ok_provincia_2 = false; break; } $codigo = intval(substr($tel, 0, 3)); switch ($codigo) { case 923: // -- Salamanca case 973: // -- Lleida case 921: // -- Segovia case 926: // -- Ciudad Real case 975: // -- Soria case 977: // -- Tarragona case 920: // -- Avila case 922: // -- Tenerife case 924: // -- Badajoz case 972: // -- Girona case 978: // -- Teruel case 971: // -- Baleares case 925: // -- Toledo case 979: // -- Palencia case 927: // -- Cáceres case 928: // -- Palmas, Las case 974: // -- Huesca case 976: // -- Zaragoza $ok_provincia_3 = true; break; default: $ok_provincia_3 = false; break; } return (($ok_provincia_2 || $ok_provincia_3) && $ok_1); } }
/**
 * Class HelperValidate
 */
abstract class HelperValidate
{

    /**
     * Valida si es un número de telefono fijo
     *
     * @param string $tel
     *
     * @return bool
     */
    public static function isPhoneFix($tel)
    {
        $tel  = trim($tel);
        $ok_1 = (preg_match("/^[0-9]+$/", $tel) && 
                 strlen($tel) == 9);
  
        $codigo = intval(substr($tel, 0, 2));
  
        switch ($codigo) {
            case 91: // -- Madrid
            case 93: // -- Barcelona
            case 94: // -- Vizcaya
            case 95: // -- Sevilla
            case 96: // -- Alicante
            case 98: // -- Asturias
                $ok_provincia_2 = true;
                break;
            default:
                $ok_provincia_2 = false;
                break;
        }
  
        $codigo = intval(substr($tel, 0, 3));
  
        switch ($codigo) {
            case 923: // -- Salamanca
            case 973: // -- Lleida
            case 921: // -- Segovia
            case 926: // -- Ciudad Real
            case 975: // -- Soria
            case 977: // -- Tarragona
            case 920: // -- Avila
            case 922: // -- Tenerife
            case 924: // -- Badajoz
            case 972: // -- Girona
            case 978: // -- Teruel
            case 971: // -- Baleares
            case 925: // -- Toledo
            case 979: // -- Palencia
            case 927: // -- Cáceres
            case 928: // -- Palmas, Las
            case 974: // -- Huesca
            case 976: // -- Zaragoza
                $ok_provincia_3 = true;
                break;
            default:
                $ok_provincia_3 = false;
                break;
        }
  
        return (($ok_provincia_2 || $ok_provincia_3) && 
                 $ok_1);
    }

}