Postcode check/regulator v2

Door Joran den Houting, 7 jaar geleden, 15.196x bekeken

Een zeer simpele postcode check te gebruiken in alle denkbare php-scripts.

De class ziet er zo uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
class Postcode {
    public $postcode;

    // Check functie met true of false return
    public function Check($postcode) {
        $this->input = preg_replace('/[^A-Z0-9]/', "", strtoupper($postcode));
        $this->result = (preg_match("/^\b[1-9]\d{3}\s*[A-Z]{2}\b$/", $this->input) ? true : false);
        return $this->result;
    }

        
    // Wanneer de postcode geaccepteerd is een gereguleerde postcode terugsturen in het formaat 1234AB
    public function Regulate($postcode) {
        $this->postcode = ($this->result == true ? $this->input : false);
        return $this->postcode;
    }
}

?>


Deze doet een check op geldigheid zoals bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
Geldig
======
1234AB
1234ab
1234 AB
1234 ab

Ongeldig
========
0234AB (Postcodes starten nooit met een 0)
1234B
123AB
123!AB


Ook zorgt het script ervoor dat de input (zoals de voorbeelden hierboven) allemaal omgezet worden naar 1 standaard format. Alle geldige input's zoals de bovenstaande zullen als output 1234AB teruggeven, dus alle spaties en leestekens verwijderd en de letters omgevormd naar hoofdletters. Dit is zeer handig voor bijvoorbeeld opslag in een database, door alle postcodes op te slaan in 1 format kun je dus ook makkelijker zoeken op postcode e.d.

Uitvoeren van de class gaat als volgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$input
= "1234 ab"; // Voorbeeld input

// Class starten

$postcode = new Postcode();
// Uitvoeren check
$postcode->Check($input);
?>


Vervolgens kun je controleren of deze geldig is of niet in een standaard vorm of verkorte vorm:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// Controleren voor front-end in normale vorm

if (($output = $postcode->Regulate()) != false ) {
    echo $output;
}
else {
    echo "Deze postcode is niet geldig.";
}

?>


Verkorte vorm:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php    
// Controleren voor front-end in verkorte vorm
echo (($output = $postcode->Regulate()) != false ? $output : "Deze postcode is niet geldig.");
?>


Het bovenstaande script zal dan 1234AB echo'en.

Uiteraard staat een werkend script bijgevoegd voor download!

Gesponsorde koppelingen

PHP script bestanden

  1. postcode.php

 

Er zijn 5 reacties op 'Postcode checkregulator v2'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Wouter J
Wouter J
7 jaar geleden
 
0 +1 -0 -1
Het zou mooier zijn als je het formaat zelf kunt opgeven. Bijv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
class Postcode
{
    // ...

    public static function regulate($postcode, $format = '####??')
    {

        // convert # to numbers and ? to strings
        $formatFized = str_replace(
            array('#', '?'),
            array('%d', '%s'),
            $format
        );

        // remove whitespace and put each character in array
        $postcodeStripped = array_filter(str_split($postcode));

        return vsprintf($formatFized, $postcodeStripped);
    }
}

?>


Gebruik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
Postcode::regulate('1234   AB'); //> 1234AB
Postcode::regulate('1234   AB', '####-??'); //> 1234-AB
Postcode::regulate('1234AB', '####-??'); //> 1234-AB
?>
Willem vp
Willem vp
7 jaar geleden
 
0 +1 -0 -1
De preg_replace op regel 7 maait bijna al het gras voor de voeten van preg_match weg, waardoor de \b en \s* in je reguliere expressie overbodig zijn geworden...
Arnold Dasilva
Arnold Dasilva
7 jaar geleden
 
0 +1 -0 -1
Beste mensen,
Wie zou mij in Jip en Janneke taal kunnen uitleggen hoe ik dit script aan me wordpress website toevoeg?
En waar ik dan mij toegestaande postcodes in kan invoeren?
Anton Fgtfgtfgt
Anton Fgtfgtfgt
7 jaar geleden
 
0 +1 -0 -1
Een postcode kan dan wel niet beginnen met een 0, maar het 2e, 3e en 4e karakter mag toch wel een 0 zijn of heb ik het fout?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Willem vp
Willem vp
7 jaar geleden
 
0 +1 -0 -1
Klopt. Zo staat het ook in het script. ;-)

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. postcode.php

Labels

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.