Schoolopdracht Kenteken validatie. help!
Ik volg een grafische opleiding en het leek mijn school een leuk idee om ons een php opdracht voor te schotelen. Mijn kennis gaat niet verder dan HTML/CSS en php is dan ook compleet nieuw voor me. Ik probeer mezelf nu een kleine 6 uur bij te lessen via verschillende php websites maar ik kom gewoon geen steek verder met de volgende opdracht:
CASUS 3: Kentekencontrole
Een autokenteken bestaat altijd uit 8 tekens (XX-XX-XX). Ieder teken is een letter, een cijfer of
een ‘-‘-teken. Een letter staat altijd naast een andere letter of naast een ‘-‘-teken. Een cijfer staat
altijd naast een ander cijfer of naast een ‘-‘-teken.
Maak een functie die controleert of een kenteken aan bovenstaande voorwaarden voldoet. De
functie geeft true of false terug. Roep in het script de functie aan om te tonen dat hij naar
behoren werkt.
Tip 1: Geen paniek
Tip 2: Deels goede oplossingen krijgen ook punten
Tip 3: Gebruik modulo (%)
Wie-o-wie kan mij (op weg) helpen? Ik snap dat jullie er niet zijn om andermans huiswerk te maken maar ik ben een beetje ten einde raad en hoop op wat hulp hierbij.
Alvast bedankt en een kus voor wie zich raad weet met deze casus haha.
Selena
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function kloptHetKenteken($k) {
// Moet 8 tekens hebben
if (strlen($k) != 8) return false;
// Of met modulo
if (($k % 2) != 0) return false;
// 3e en 6e teken moet een streepje zijn
if ($k[2] != '-' || $k[5] != '-') return false;
// Er mogen alleen letters, cijfers of een streepje staan
if (!preg_match('/^[a-zA-Z0-9-]+$/', $k)) return false;
for ($i = 1; $i < 8; $i++) {
$c = $k[$i];
if ($c == '-') continue;
$p = $k[$i - 1];
// Voor een letter mag geen cijfer staan
if (ctype_alpha($c) && ctype_digit($p)) return false;
// Voor een cijfer mag geen letter staan
if (ctype_digit($c) && ctype_alpha($p)) return false;
}
return true;
}
// Moet 8 tekens hebben
if (strlen($k) != 8) return false;
// Of met modulo
if (($k % 2) != 0) return false;
// 3e en 6e teken moet een streepje zijn
if ($k[2] != '-' || $k[5] != '-') return false;
// Er mogen alleen letters, cijfers of een streepje staan
if (!preg_match('/^[a-zA-Z0-9-]+$/', $k)) return false;
for ($i = 1; $i < 8; $i++) {
$c = $k[$i];
if ($c == '-') continue;
$p = $k[$i - 1];
// Voor een letter mag geen cijfer staan
if (ctype_alpha($c) && ctype_digit($p)) return false;
// Voor een cijfer mag geen letter staan
if (ctype_digit($c) && ctype_alpha($p)) return false;
}
return true;
}
01-ABC-2
Verder worden bepaalde lettercombinaties niet gebruikt, bijvoorbeeld GVD.
http://nl.wikipedia.org/wiki/Nederlands_kenteken