Also.
1. http://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Nummerierung/Rufnummern/ONVerzeichnisse/ONBVerzeichnis/B-ListeOrtsnetzenumerisch.pdf?__blob=publicationFile&v=3
herunterladen. (wget ist eine gute Idee...)
2. Wer Linux und die pdf-Tools installiert hat:
pdftotext -raw B-ListeOrtsnetzenumerisch.pdf
Resultat ist eine neue Datei B-ListeOrtsnetzenumerisch.txt
3. Schnell und schmutzig:
<?php
define ( 'INFILE', '/tmp/B-ListeOrtsnetzenumerisch.txt' );
define ( 'OUTFILE_CSV', '/tmp/vw.csv' );
define ( 'OUTFILE_JSON', '/tmp/vw.json');
define ( 'OUTFILE_PHP', '/tmp/vw.var');
#define ( 'OUTFILE_JSON', false);
define('CSV_TR','|') ;
define('CSV_NL',"\n");
$arRaw=file(INFILE) or die ('Fatal: ' . INFILE . ' nicht lesbar.');
$vw_array=false;
if (OUTFILE_CSV) {
file_put_contents(OUTFILE_CSV, '', LOCK_EX);
}
while ( $row = array_shift($arRaw) ) {
$trow=trim($row);
#echo $row, "\n";
$vw=false;
$bezirk=false;
if ( preg_match('/^0\d{2,4}/', $row) ) {
#Dieses Zeile ist eine Vorwahl
$vw = trim($row);
# es gibt tatsächlich Einträge, da ist der Bezirk in einer Zeile mit der PLZ:
$parts=false;
$parts=preg_split('/ +/', $vw);
if ( isset($parts[1]) ) {
$vw=trim($parts[0]);
$bezirk=trim($parts[1]);
} else {
$bezirk = array_shift($arRaw);
$bezirk = trim($bezirk);
}
$arVw=str_split($vw,1);
$arVwcount=count($arVw);
echo $vw, ' | ', $arVwcount, ' | ', $bezirk , "\n";
if ( 5 == $arVwcount ) {
$vw_array[$arVw[0]][$arVw[1]][$arVw[2]][$arVw[3]][$arVw[4]]['txt'] = $bezirk;
} else if ( 4 == $arVwcount ) {
$vw_array[$arVw[0]][$arVw[1]][$arVw[2]][$arVw[3]]['txt'] = $bezirk;
} else if ( 3 == $arVwcount ) {
$vw_array[$arVw[0]][$arVw[1]][$arVw[2]]['txt'] = $bezirk;
}
if (OUTFILE_CSV) {
file_put_contents(OUTFILE_CSV, $vw . CSV_TR . $bezirk . CSV_NL, FILE_APPEND|LOCK_EX);
}
}
}
if (OUTFILE_JSON) {
file_put_contents(OUTFILE_JSON, json_encode ($vw_array), LOCK_EX);
}
if (OUTFILE_PHP) {
file_put_contents(OUTFILE_PHP, '<?php $ar_vw_parts_ort = ' . var_export($vw_array, true) . ';', LOCK_EX);
}
##### Test:
include(OUTFILE_PHP);
echo $ar_vw_parts_ort[0][8][9]['txt'], "\n";