Databáza PSČ, miest, obcí a krajov pre ČR a SK
Zdrojem databáze je česká pošta (zákaznické výstupy) a slovenská pošta (poštovné směrovací čísla) ve formátu Excel/CSV.
Aktualizace: 17.08.2017
Seznam PSČ stáhni zde (pro vložení do databáze - formát SQL):
Použitý skript:
<?php
header("Content-Type: text/html; encoding=UTF-8");
function fixCSV($csv) // odstraní uvozovky a new lines
{
$csv = preg_replace_callback('~"([^"]+)"~siU', function($m) {
return strtr($m[1], array(";" => ",", "\r\n" => " "));
}, $csv);
return $csv;
}
require 'db.php';
/*
Kraje jsou doplněny podle počátečních čísel (nepřesné).
Pro přesnost je nutno doplnit z jiné databáze, což nevím kde,
protože na ČSÚ číselníku chybí PSČ (je tam jen kód obce a název obce)
*/
$kraje = array(
'1' => 'Hlavní město Praha', // CZ
'2' => 'Středočeský',
'3' => 'Jihočeský a Západočeský',
'4' => 'Severočeský',
'5' => 'Východočeský (+část Jihomoravského)',
'6' => 'Jihomoravský',
'7' => 'Severomoravský',
'8' => 'Bratislava a okolí', // SK
'9' => 'Západoslovenský a Středoslovenský', // SK
'0' => 'Středoslovenský a Východoslovenský', // SK
);
// XSL soubor stáhnete na CeskaPosta.cz, otevřete v Excel a uložte jako CSV
$csv = file_get_contents('cz2.csv');
$csv = iconv('CP1250', 'UTF-8//TRANSLIT//IGNORE', $csv);
$csv = fixCSV($csv);
$lines = explode("\r", $csv);
$first = false;
foreach ($lines as $line)
{
if (!$first) {
$first = true;
continue;
}
// Array ( [0] => NAZCOBCE [1] => PSC
// [2] => NAZPOST [3] => KODOKRESU [4] => NAZOKRESU [5] => NAZOBCE )
$cols = explode(";", $line);
foreach ($cols as &$col) {
$col = trim($col);
}
unset($col);
if (!isset($cols[1])) continue;
$psc = str_replace(" ", "", $cols[1]);
if (!$psc) continue;
$kraj = isset($kraje[ $psc{0} ]) ? $kraje[ $psc{0} ] : '';
$ins = array();
$ins['psc'] = safeSQL($cols[1]);
$ins['mesto'] = safeSQL($cols[5]);
$ins['okres'] = safeSQL($cols[4]);
$ins['kraj'] = safeSQL($kraj);
$ins['stat'] = safeSQL('CZ');
$db->qinsert("psc", $ins);
}