Ik vind het wel bruut om tegen een bezoeker te zeggen dat zijn postcode 'ABCD 12 ' fout is. Kun je beter twee vakjes maken, 1 voor letters en 1 voor cijfers, en er een maxlength opzetten. Als iemand die maxlength er dan afhaalt maakt het niet uit, omdat je er toch een substr($var,4); overheen haalt.
Boris, dat ben ik niet met je eens. Je wilt toch een geldige nederlandse postcode als resultaat? Die bestaan uit 4 cijfers gecombineerd met 2 letters.
Wil je een postcode uit een ander land ook toestaan, dan zul je je postcodecheck moeten aanpassen. Maar dus niet zoals bij jou het geval is ook ongeldige postcodes toe gaan laten ;-)
Voor de volledigheid; als je 0 of 1 spaties tussen de 4 cijfers en 2 letters wilt, wordt je regex zo:
<?php
function valid_postcode ($pc) {
return eregi ('^[0-9]{4} ?[A-Z]{2}$', $pc);
}
?>
SELECT
CASE
WHEN
LENGTH(postcode) = 6
THEN
SELECT
CONCAT(
SUBSTRING(postcode, 1, 4),
' ',
UPPER(SUBSTRING(postcode, 5, 2))
)
AS postcode
ELSE
SELECT postcode
END CASE
Geeft volgens mij ook de goede uitkomst ongeacht het aantal tekens en kleine dan wel hoofdletters
Misschien is dit dan een betere??
Aangezien de postcodes bij 1000 beginnen toch?
<?php
function IsPostcode($postcode) {
return preg_match('/^[1-9][0-9]{3} ?[a-zA-Z]{2}$/', $postcode);
}
?>
Nog even over de alias, zorg er wel voor dat deze een andere naam heeft dan het origineel. Anders heeft het weinig zin en gaat het uiteindelijk fouten opleveren. AS postcode_new is een stuk beter dan AS postcode. In het laatste geval krijg je namelijk de situatie dat postcode ongelijk is aan postcode... Je hebt de boel namelijk net aangepast!