Return to Snippet

Revision: 57893
at June 13, 2012 22:21 by MGHollander


Updated Code
/*

Straatnamen en huisnummer splitsen, hieronder diverse types straatnamen
Bron: http://www.pfz.nl/archief/965267-adres-splitsen-in-straatnaam-en-huisnr/

*/
 
$straten = array(
    'Dorpstraat 2',
    'Laan 1933 2', // Ede, Holland
    '18 Septemberplein 12', // Eindhoven, Holland
    'Kerkstraat 42-f3',
    'Saturnusstraat 60-75',
    'Kerk straat 2b',
    "1, rue de l'eglise",
    '42nd street, 1337a',
    '1e Constantijn Huigensstraat 9b',
    'Maas-Waalweg 15',
    'De Dompelaar 1 B',
);
 
$pattern = '#^([a-z0-9]*) ([0-9]{1,5})([a-z0-9\-/]{0,})$#i';
$pattern = '#^([a-z0-9 [:punct:]\']*) ([0-9]{1,5})([a-z0-9 \-/]{0,})$#i';
 
$goed = 0;
$fout = 0;
 
$data = array();
 
foreach($straten as $straat) {
    // Franse adressen, al werkt het niet...
    if (preg_match("#^([0-9]),#", $straat)) {
        $patternFrans = '#^([0-9]), ([a-z0-9\-/ \']*) ([a-z0-9\-/ ]{0,})#i';
        preg_match($patternFrans, $straat, $aMatch);
       
        $straatnaam = $aMatch[2];
        $huisnummer = $aMatch[1];
        $huisnrtoev = (isset($aMatch[3])) ? $aMatch[3] : '';
    } else {
        preg_match($pattern, $straat, $aMatch);
 
        $straatnaam = $aMatch[1];
        $huisnummer = $aMatch[2];
        $huisnrtoev = (isset($aMatch[3])) ? $aMatch[3] : '';
    }
 
    $succes = false;
    if (empty($straatnaam) || empty($huisnummer)) {
        $fout++;
    } else {
        $succes = true;
        $goed++;
    }
 
    $data[] = '<div style="background-color: '. ($succes ? 'lightgreen' : 'red') .'">';
    $data[] = $straat;
    $data[] = 'straat : '. $straatnaam;
    $data[] = 'nummer : '. $huisnummer;
    $data[] = 'toevoeging : '. $huisnrtoev;
    $data[] = '</div>';
}
 
echo 'Goed: '. $goed . PHP_EOL;
echo 'Fout: '. $fout . PHP_EOL;
echo PHP_EOL;
echo implode(PHP_EOL, $data);

Revision: 57892
at June 13, 2012 22:12 by MGHollander


Initial Code
/*

Straatnamen en huisnummer splitsen, hieronder diverse types straatnamen
Bron: http://www.pfz.nl/archief/965267-adres-splitsen-in-straatnaam-en-huisnr/

*/
 
$straten = array(
    'Dorpstraat 2',
    'Laan 1933 2', // Ede, Holland
    '18 Septemberplein 12', // Eindhoven, Holland
    'Kerkstraat 42-f3',
    'Kerk straat 2b',
    "1, rue de l'eglise",
    '42nd street, 1337a',
    '1e Constantijn Huigensstraat 9b',
    'Maas-Waalweg 15',
    'De Dompelaar 1 B',
);
 
$pattern = '#^([a-z0-9]*) ([0-9]{1,5})([a-z0-9\-/]{0,})$#i';
$pattern = '#^([a-z0-9 [:punct:]\']*) ([0-9]{1,5})([a-z0-9 \-/]{0,})$#i';
 
$goed = 0;
$fout = 0;
 
$data = array();
 
foreach($straten as $straat) {
    // Franse adressen, al werkt het niet...
    if (preg_match("#^([0-9]),#", $straat)) {
        $patternFrans = '#^([0-9]), ([a-z0-9\-/ \']*) ([a-z0-9\-/ ]{0,})#i';
        preg_match($patternFrans, $straat, $aMatch);
       
        $straatnaam = $aMatch[2];
        $huisnummer = $aMatch[1];
        $huisnrtoev = (isset($aMatch[3])) ? $aMatch[3] : '';
    } else {
        preg_match($pattern, $straat, $aMatch);
 
        $straatnaam = $aMatch[1];
        $huisnummer = $aMatch[2];
        $huisnrtoev = (isset($aMatch[3])) ? $aMatch[3] : '';
    }
 
    $succes = false;
    if (empty($straatnaam) || empty($huisnummer)) {
        $fout++;
    } else {
        $succes = true;
        $goed++;
    }
 
    $data[] = '<div style="background-color: '. ($succes ? 'lightgreen' : 'red') .'">';
    $data[] = $straat;
    $data[] = 'straat : '. $straatnaam;
    $data[] = 'nummer : '. $huisnummer;
    $data[] = 'toevoeging : '. $huisnrtoev;
    $data[] = '</div>';
}
 
echo 'Goed: '. $goed . PHP_EOL;
echo 'Fout: '. $fout . PHP_EOL;
echo PHP_EOL;
echo implode(PHP_EOL, $data);

Initial URL


Initial Description
Straatnamen en huisnummer splitsen, hieronder diverse types straatnamen
Bron: http://www.pfz.nl/archief/965267-adres-splitsen-in-straatnaam-en-huisnr/

Initial Title
Separate street and number from an address

Initial Tags
number

Initial Language
PHP