Provincias y localidades de España / Códigos postales
Casi todos nos habremos encontrado con este problema a la hora de abordar el desarrollo de algunas aplicaciones:
Tener la lista de provincias de España en la base de datos, poder saber qué provincia es a partir del código postal, tener el listado de poblaciones de una determinada provincia.
Seguro que a más de uno le viene bien lo que dejo aquí ;)
<?php
$provincias = array (
array ('id' => "01", "nombre" => "ALAVA"),
array ('id' => "02", "nombre" => "ALBACETE"),
array ('id' => "03", "nombre" => "ALICANTE"),
array ('id' => "04", "nombre" => "ALMERIA"),
array ('id' => "33", "nombre" => "ASTURIAS"),
array ('id' => "05", "nombre" => "AVILA"),
array ('id' => "06", "nombre" => "BADAJOZ"),
array ('id' => "08", "nombre" => "BARCELONA"),
array ('id' => "09", "nombre" => "BURGOS"),
array ('id' => "10", "nombre" => "CACERES"),
array ('id' => "11", "nombre" => "CADIZ"),
array ('id' => "39", "nombre" => "CANTABRIA"),
array ('id' => "12", "nombre" => "CASTELLON"),
array ('id' => "51", "nombre" => "CEUTA"),
array ('id' => "13", "nombre" => "CIUDAD REAL"),
array ('id' => "14", "nombre" => "CORDOBA"),
array ('id' => "15", "nombre" => "CORUÑA, A"),
array ('id' => "16", "nombre" => "CUENCA"),
array ('id' => "17", "nombre" => "GIRONA"),
array ('id' => "18", "nombre" => "GRANADA"),
array ('id' => "19", "nombre" => "GUADALAJARA"),
array ('id' => "20", "nombre" => "GUIPUZCOA"),
array ('id' => "21", "nombre" => "HUELVA"),
array ('id' => "22", "nombre" => "HUESCA"),
array ('id' => "07", "nombre" => "ILLES BALEARS"),
array ('id' => "23", "nombre" => "JAEN"),
array ('id' => "24", "nombre" => "LEON"),
array ('id' => "25", "nombre" => "LLEIDA"),
array ('id' => "27", "nombre" => "LUGO"),
array ('id' => "28", "nombre" => "MADRID"),
array ('id' => "29", "nombre" => "MALAGA"),
array ('id' => "52", "nombre" => "MELILLA"),
array ('id' => "30", "nombre" => "MURCIA"),
array ('id' => "31", "nombre" => "NAVARRA"),
array ('id' => "32", "nombre" => "OURENSE"),
array ('id' => "34", "nombre" => "PALENCIA"),
array ('id' => "35", "nombre" => "PALMAS, LAS"),
array ('id' => "36", "nombre" => "PONTEVEDRA"),
array ('id' => "26", "nombre" => "RIOJA, LA"),
array ('id' => "37", "nombre" => "SALAMANCA"),
array ('id' => "38", "nombre" => "SANTA CRUZ DE TENERIFE"),
array ('id' => "40", "nombre" => "SEGOVIA"),
array ('id' => "41", "nombre" => "SEVILLA"),
array ('id' => "42", "nombre" => "SORIA"),
array ('id' => "43", "nombre" => "TARRAGONA"),
array ('id' => "44", "nombre" => "TERUEL"),
array ('id' => "45", "nombre" => "TOLEDO"),
array ('id' => "46", "nombre" => "VALENCIA"),
array ('id' => "47", "nombre" => "VALLADOLID"),
array ('id' => "48", "nombre" => "VIZCAYA"),
array ('id' => "49", "nombre" => "ZAMORA"),
array ('id' => "50", "nombre" => "ZARAGOZA")
);
?>
Es un array PHP con los nombres de las provincias y los dos primeros digitos (id) del código postal que le corresponde. No obstante, hay algunas excepciones en esto de los códigos postales. Aquí otra utilidad:
<script type="text/javascript">
/////////////////////////////////////////
//
// CODIGO POSTAL
//
/////////////////////////////////////////
//
// Función constructora del objeto vector
// Este objeto se usa como matriz asociativa
//
function Vector()
{
this["43421"]="Barcelona";
this["34492"]="Burgos";
this["01427"]="Burgos";
this["34815"]="Burgos";
this["39232"]="Burgos";
this["01211"]="Burgos";
this["42142"]="Burgos";
this["34260"]="Burgos";
this["26212"]="Burgos";
this["14449"]="Ciudad Real";
this["02636"]="Cuenca";
this["28190"]="Guadalajara";
this["08717"]="Guadalajara";
this["08619"]="Lleida";
this["22583"]="Lleida";
this["08281"]="Lleida";
this["22584"]="Lleida";
this["08697"]="Lleida";
this["43449"]="Lleida";
this["08289"]="Lleida";
this["32151"]="Lugo";
this["02438"]="Murcia";
this["04690"]="Murcia";
this["04647"]="Murcia";
this["03657"]="Raspay";
this["50686"]="Navarra";
this["09471"]="Segovia";
this["26127"]="Soria";
this["28310"]="Toledo";
this["02215"]="Valencia";
this["42269"]="Zaragoza";
this["44591"]="Zaragoza";
this["22808"]="Zaragoza";
this["42220"]="Zaragoza";
this["22806"]="Zaragoza";
}
///////////////////////////////////////////////////////
//
// Nombre de provincia como función del CPostal
//
function obtener_provincia_de_cp(codpos){
// A esta func. la llamamos directamente al perder el foco los campos
// cod. postal de cada sección.
var nodefinido; // Necesario para comparar con 'undefined'
var tiponodefinido,tipoexc;
var cod = new Array(); // Vector que asocia CP con Provincia
var exc = new Vector();// Vector asociativo para las excepciones
cod[1]="Alava";cod[2]="Albacete";cod[3]="Alicante";
cod[4]="Almeria";cod[5]="Avila";cod[6]="Badajoz";
cod[7]="Illes Balears";cod[8]="Barcelona";cod[9]="Burgos";
cod[10]="Caceres";
cod[11]="Cadiz";cod[12]="Castellon";cod[13]="Ciudad Real";
cod[14]="Cordoba";cod[15]="A Coruña";cod[16]="Cuenca";
cod[17]="Girona";cod[18]="Granada";cod[19]="Guadalajara";
cod[20]="Guipuzcoa";
cod[21]="Huelva";cod[22]="Huesca";cod[23]="Jaen";cod[24]="Leon";
cod[25]="Lleida";cod[26]="La Rioja";cod[27]="Lugo";cod[28]="Madrid";
cod[29]="Malaga";cod[30]="Murcia";
cod[31]="Navarra";cod[32]="Ourense";cod[33]="Asturias";cod[34]="Palencia";
cod[35]="Las Palmas";cod[36]="Pontevedra";cod[37]="Salamanca";
cod[38]="S.C. Tenerife";cod[39]="Cantabria";cod[40]="Segovia";
cod[41]="Sevilla";cod[42]="Soria";cod[43]="Tarragona";cod[44]="Teruel";
cod[45]="Toledo";cod[46]="Valencia";cod[47]="Valladolid";cod[48]="Vizcaya";
cod[49]="Zamora";cod[50]="Zaragoza";
cod[51]="Ceuta";cod[52]="Melilla";
if (!isNaN(codpos)){
if (codpos > 999 && codpos < 53000 && codpos.length == 5){
var Prov = codpos.substring(0,2);
if (Prov < 10) Prov=codpos.substring(1,2);
tiponodefinido= typeof nodefinido;
tipoexc= typeof exc[codpos];
if (tipoexc != tiponodefinido) // Si es una excepcion...
Prov = exc[codpos]; // obtenemos el valor del vector
else // si no lo es...
Prov = cod[Prov]; // lo pillamos de la tabla cod
Prov = Prov.toUpperCase();
return Prov;
}
}
return '';
}
</script>
Y como hoy me siento generoso :P, aquí os coloco un XML con todas las provincias y sus correspondientes localidades.
El Arbol XML tiene la siguiente estructura:
<lista> <provincia id="01"> <nombre><![CDATA[ALAVA]]></nombre> <localidades> <localidad c="0"><![CDATA[ABERASTURI]]></localidad> <localidad c="0"><![CDATA[ABETXUKO]]></localidad> <localidad c="0"><![CDATA[ABEZIA]]></localidad> <localidad c="0"><![CDATA[ABORNIKANO]]></localidad> <localidad c="0"><![CDATA[ACEBEDO]]></localidad> <localidad c="0"><![CDATA[ACILU]]></localidad> <localidad c="0"><![CDATA[ACOSTA]]></localidad> ... </localidades> </provincia> ... <provincia id="29"> <nombre><![CDATA[MALAGA]]></nombre> <localidades> <localidad c="0"><![CDATA[RONDA]]></localidad> <localidad c="0"><![CDATA[MALAGA]]></localidad> ... </localidades> </provincia> </lista>
Podeis descargaros el XML completo en este enlace (zip).
Espero que os sea de ayuda ;)
Escrito por manuel el Friday 21 de April 2006
Guardado en Programacion, Varios




Thursday 8 de June de 2006 a las 4:58 pm
Gracias!!!
Se sale… llevo varios días rompiéndome el coco con esto, a ver si puedo componer bien el código para que el formulario funcione….ya te contaré.
Muchas gracias! eres un crack!
Friday 21 de July de 2006 a las 11:46 pm
Me gustaría tener el listado de todas las localidades y barrios de Málaga capital y provincia por su código postal.
¿Cómo lo puedo conseguir?
Un saludo.
Julián
Saturday 22 de July de 2006 a las 1:00 pm
Hola Julián,
imagino que puedes pedírselo a correos (www.correos.es). Quizá ellos puedan darte un fichero con toda la lista.
Por cierto, si lo consigues, pásamelo ;)
Saludos
Sunday 24 de September de 2006 a las 10:09 am
Hola¡¡¡¡
Me gustaria saver los codigos postales con todos los barrios de zaragoza.
donde lo podria encontrar??? o si alguien lo save xfa ke me lo diga.
Gracias
Thursday 22 de March de 2007 a las 6:28 pm
Hola buenas. Necesito un listado con los códigos postales de Madrid capital. Los he buscado en varios buscadores de internet, tanto Madrid tanta capital, tanta mierda que de berían barrer.
Disculpen las blasfemias, y gracias anticipadas.
Sin otro particulra, un cordial saludo: AROA
Thursday 22 de March de 2007 a las 7:48 pm
Hola,
como comentaba más arriba, creo que podrías pedírselos a los responsables de correos (http://www.correos.es). Quizá ellos puedan proporcionarte un listado.
Saludos
Tuesday 17 de April de 2007 a las 6:26 pm
Aún no lo he usado, pero ya te doy las gracias!
Wednesday 18 de April de 2007 a las 12:00 pm
Me estoy volviendo loco con esto, lo necesito apra importarlo a una base de datos Oracle para mi proyecto fin de carrera, dios que tortura, asi que esto no me sirve demasiado porque no quisiera tenerlo metidos en arrays si no en base de datos, pero gracias, seguro q a mucha gente como yo le salvas la vida, jeje.Lo de correos….no cuentes con ellos, cobran 600 euros por esos dats aunque deberian ser publicos, asi que eso es lo que hay.
PD: yo de todas formas se lo he pedido a correos y les e suplicado haber si cuela
Thursday 3 de May de 2007 a las 8:36 pm
Excelente trabajo, seguro que alguna vez lo uso, lo he posteado en mi blog.
http://www.camyna.com/wordpress/2007/05/03/codigo-en-php-de-todas-las-localidades-espanolas/
Saturday 19 de May de 2007 a las 12:57 pm
Hola quisiera saber los codigos postales por locolidades de la comunidad de Madrid. espero me envies pronto porque me urge . Gracias
Friday 1 de June de 2007 a las 1:03 pm
[...] que escribí el artículo de Provincias y localidades de España / Códigos postales, me ha sorprendido que se haya convertido en uno de los más leidos del blog. Me alegro, porque eso [...]
Friday 20 de July de 2007 a las 5:37 pm
por favor les pido que me envien el codigo de la ciudad de Villanueva urgente…muchas gracias…..saludos emma
Friday 20 de July de 2007 a las 5:45 pm
Hola Emma,
puedes usar el buscador de codigos postales:
http://www.ingeniuz.com/codigos-postales/
Friday 14 de September de 2007 a las 2:00 am
buenas tardes a todos, viendo que tenemos practicamente para todos los gustos, he leido que alguién la necesitaba para BBDD, pues aquí va para MySQL. un saludo a tod@s
–
– Estructura de tabla para la tabla `provincias`
–
CREATE TABLE `provincias` (
`ID` int(11) NOT NULL auto_increment,
`provincia` varchar(255) NOT NULL default ”,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=53 ;
–
– Volcar la base de datos para la tabla `provincias`
–
INSERT INTO `provincias` VALUES (1, ‘ÁLAVA’);
INSERT INTO `provincias` VALUES (2, ‘ALBACETE’);
INSERT INTO `provincias` VALUES (3, ‘ALICANTE’);
INSERT INTO `provincias` VALUES (4, ‘ALMERÍA’);
INSERT INTO `provincias` VALUES (5, ‘ASTURIAS’);
INSERT INTO `provincias` VALUES (6, ‘ÁVILA’);
INSERT INTO `provincias` VALUES (7, ‘BADAJOZ’);
INSERT INTO `provincias` VALUES (8, ‘BARCELONA’);
INSERT INTO `provincias` VALUES (9, ‘BURGOS’);
INSERT INTO `provincias` VALUES (10, ‘CÁCERES’);
INSERT INTO `provincias` VALUES (11, ‘CÁDIZ’);
INSERT INTO `provincias` VALUES (12, ‘CANTABRIA’);
INSERT INTO `provincias` VALUES (13, ‘CASTELLÓN’);
INSERT INTO `provincias` VALUES (14, ‘CEUTA’);
INSERT INTO `provincias` VALUES (15, ‘CIUDAD REAL’);
INSERT INTO `provincias` VALUES (16, ‘CÓRDOBA’);
INSERT INTO `provincias` VALUES (17, ‘CUENCA’);
INSERT INTO `provincias` VALUES (18, ‘GIRONA’);
INSERT INTO `provincias` VALUES (19, ‘GRANADA’);
INSERT INTO `provincias` VALUES (20, ‘GUADALAJARA’);
INSERT INTO `provincias` VALUES (21, ‘GUIPÚZCOA’);
INSERT INTO `provincias` VALUES (22, ‘HUELVA’);
INSERT INTO `provincias` VALUES (23, ‘HUESCA’);
INSERT INTO `provincias` VALUES (24, ‘ISLAS BALEARES’);
INSERT INTO `provincias` VALUES (25, ‘JAÉN’);
INSERT INTO `provincias` VALUES (26, ‘LA CORUÑA’);
INSERT INTO `provincias` VALUES (27, ‘LA RIOJA’);
INSERT INTO `provincias` VALUES (28, ‘LAS PALMAS’);
INSERT INTO `provincias` VALUES (29, ‘LEÓN’);
INSERT INTO `provincias` VALUES (30, ‘LLEIDA’);
INSERT INTO `provincias` VALUES (31, ‘LUGO’);
INSERT INTO `provincias` VALUES (32, ‘MADRID’);
INSERT INTO `provincias` VALUES (33, ‘MÁLAGA’);
INSERT INTO `provincias` VALUES (34, ‘MELILLA’);
INSERT INTO `provincias` VALUES (35, ‘MURCIA’);
INSERT INTO `provincias` VALUES (36, ‘NAVARRA’);
INSERT INTO `provincias` VALUES (37, ‘ORENSE’);
INSERT INTO `provincias` VALUES (38, ‘PALENCIA’);
INSERT INTO `provincias` VALUES (39, ‘PONTEVEDRA’);
INSERT INTO `provincias` VALUES (40, ‘SALAMANCA’);
INSERT INTO `provincias` VALUES (41, ‘SANTA CRUZ DE TENERIFE’);
INSERT INTO `provincias` VALUES (42, ‘SEGOVIA’);
INSERT INTO `provincias` VALUES (43, ‘SEVILLA’);
INSERT INTO `provincias` VALUES (44, ‘SORIA’);
INSERT INTO `provincias` VALUES (45, ‘TARRAGONA’);
INSERT INTO `provincias` VALUES (46, ‘TERUEL’);
INSERT INTO `provincias` VALUES (47, ‘TOLEDO’);
INSERT INTO `provincias` VALUES (48, ‘VALENCIA’);
INSERT INTO `provincias` VALUES (49, ‘VALLADOLID’);
INSERT INTO `provincias` VALUES (50, ‘VIZCAYA’);
INSERT INTO `provincias` VALUES (51, ‘ZAMORA’);
INSERT INTO `provincias` VALUES (52, ‘ZARAGOZA’);
Tuesday 25 de September de 2007 a las 7:13 pm
me gustaria tener un listado de todos los códigos postales de españa. el de aguimes es el 35260 en la provincia de las palmas de gran canaria. y ¿los demás?……. gracias
Tuesday 20 de November de 2007 a las 10:23 pm
Hola Manuel
He intentado bajarme el codigo completo, pero me da un error.
¿Esta correcto el codigo?
¿Como es que no me lo puedo bajar?
Saludos
Wednesday 21 de November de 2007 a las 9:58 am
Hola,
acabo de probar el enlace y funciona sin problemas ¿qué error te da?
Friday 21 de December de 2007 a las 9:22 pm
Yo he metido en MS Access 97 una tabla con todas las poblaciones de España, con su cód. postal y su código INE (Instituto Nacional de Estadística).
Si alguien lo quiere, que diga dónde lo puedo colgar y lo cuelgo.
Eso sí, sólo están las poblaciones de cód. postal único, es decir, los que tienen más de uno dependiendo de la calle no están.
Si alguien tiene esa parte, que lo pase y lo incorporo.
Monday 11 de February de 2008 a las 5:46 pm
Tu página me ha sacado de un apuro; necesitaba un código postal con urgencia. Muchas gracias. Te la he insertado en el directorio de enlaces de mi web, INDAGA.net. Es lo menos que podía hacer. Gracias otra vez.
Salu2,
Guillermo
Monday 11 de February de 2008 a las 5:50 pm
Gracias a ti, Guilermo ;)
Thursday 17 de July de 2008 a las 3:50 pm
Estaba buscando el código postal de una calle de la Manga (Murcia), pero solo aparece la Manga del Mar menor, que no es la misma Manga a que me refiero, porque la que busco es la que llaman bulgarmente Manga del Mar Mayor, que está pasando por Cabo de Palos.
He mirado en las páginas de correos y telégrafos, he buscado por “guia de códigos”, pero en ningún lugar he tenido éxito para sacar en concreto la información, todo era para ahorrar el ir hasta correos a ojear el libro de códigos que allí disponen para el público.
Mi comentario que no otro, es que es una gran vergüenza que con tantos medios en un país que se supone desarrollado, exista tanta falta de información y de sencillez. Con lo poco que cuesta colgar tal cual las páginas del librito de correos en internet para que uno se abastezca sencillamente. Estamos carentes de gente que cumpla con su deber n la administración. A ver si apartir de ahora alguien lee este articulo y se pone manos a la obra para ordenar a quien corresponda que cumpla con su labor.
Friday 28 de August de 2009 a las 4:58 pm
Por si a alguien le sirve, aquí van algunos enlaces interesantes sobre el tema:
http://www.carmepla.com/es/2009/01/05/tablas-de-paises-provincias-municipios-y-codigos-postales/
http://download.geonames.org/export/dump/
http://codigos-postales.albin-world.com/
Thursday 22 de October de 2009 a las 10:41 am
Hola: Tengo los codigos de las calles de Huesca capital. Por mi trabajo lo necesito todos los días. Pero la ciudad ha crecido y mi listado no. Necesitaria actualizarlo pues hay bastantes calles nuevas. ¿alguien sabe donde puedo hacerlo? Gracias anticipadas
Sunday 7 de March de 2010 a las 7:31 pm
Hola
Este mensaje es para juanjo, solo comentarte que hay varios codigos que estan mal, Ceuta es el 51 y Melilla es el 52, por eso al final sale Zaragoza con el 52 y es el 50 y Madrid sale con el 32 y debe ser el 28
Posiblemente haya otros mal
Saludos y hasta pronto
Juan
Sunday 7 de March de 2010 a las 7:34 pm
Hola de nuevo
Os envio los codigops correctos
01;ALAVA/ARABA
02;ALBACETE
03;ALICANTE/ALACANT
04;ALMERÍA
05;AVILA
06;BADAJOZ
07;ILLES BALEARS/I. BALEARES
08;BARCELONA
09;BURGOS
10;CÁCERES
11;CÁDIZ
12;CASTELLÓN/CASTELLÓ
13;CIUDAD REAL
14;CÓRDOBA
15;A CORUÑA/LA CORUÑA
16;CUENCA
17;GIRONA/GERONA
18;GRANADA
19;GUADALAJARA
20;GUIPUZKOA/GUIPÚZCOA
21;HUELVA
22;HUESCA
23;JAÉN
24;LEÓN
25;LLEIDA/LÉRIDA
26;LA RIOJA
27;LUGO
28;MADRID
29;MÁLAGA
30;MURCIA
31;NAVARRA
32;OURENSE/ORENSE
33;ASTURIAS
34;PALENCIA
35;LAS PALMAS
36;PONTEVEDRA
37;SALAMANCA
38;STA CRUZ DE TENERIFE
39;CANTABRIA
40;SEGOVIA
41;SEVILLA
42;SORIA
43;TARRAGONA
44;TERUEL
45;TOLEDO
46;VALENCIA
47;VALLADOLID
48;VIZCAYA/BIZKAIA
49;ZAMORA
50;ZARAGOZA
51;CEUTA
52;MELILLA
Saludos y hasta otra
Juan