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.
/** * 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); } }