ik heb vanuit de database met postcodes die opmaak heeft 1234AB en aangezien deze alle van ned heeft kan ik ze niet veranderen;)

hoe zorg ik ervoor dat de output 1234 AB wordt?

Johan
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 ;-)
ik bedoel dat ik 'ABCD 12 ' geen ongeldige postcode vind ;-)
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
Als de lengte van postcode 5 is, dan eheft dit toch geen zin:
SUBSTRING(postcode, 5, 2)
? Of betekent lengte 5 => 6 karakters, als 0 mee wordt geteld?
Boris je hebt gelijk aangepast moest natuurlijk 6 zijn
@ Jan:

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!
@Frank: heb je natuurlijk helemaal gelijk in!

Reageren