PHP- Postcode format function
This PHP function formats a string (as long as it is between 5-7 charcters in length after removing spaces) into a proper postcode format. So for example, the following postcode "CM189Th" will be returned as "CM18 9TH"
If the string being passed is not a valid length, formatting is bypassed and the original string is returned.
The function will return the following formats:
- LN NLL
- LLN NLL
- LNN NLL
- LLNN NLL
- LLNL NLL
- LNL NLL
Postcode Format Function 1 (only formats valid postcodes)
If the UK postcode you're trying to format is ALWAYS going to be valid, then use the following code. If not, I would recommend using the second example.
//format postcode function postcodeFormat($postcode) { //remove non alphanumeric characters $cleanPostcode = preg_replace("/[^A-Za-z0-9]/", '', $postcode); //make uppercase $cleanPostcode = strtoupper($cleanPostcode); //insert space $postcode = substr($cleanPostcode, 0, -3) . " " . substr($cleanPostcode, -3); return $postcode; }
Postcode Format Function 2 (formats invalid postcodes)
//format postcode function postcodeFormat($postcode) { //trim and remove spaces $cleanPostcode = preg_replace("/[^A-Za-z0-9]/", '', $postcode); //make uppercase $cleanPostcode = strtoupper($cleanPostcode); //if 5 charcters, insert space after the 2nd character if(strlen($cleanPostcode) == 5) { $postcode = substr($cleanPostcode,0,2) . " " . substr($cleanPostcode,2,3); } //if 6 charcters, insert space after the 3rd character elseif(strlen($cleanPostcode) == 6) { $postcode = substr($cleanPostcode,0,3) . " " . substr($cleanPostcode,3,3); } //if 7 charcters, insert space after the 4th character elseif(strlen($cleanPostcode) == 7) { $postcode = substr($cleanPostcode,0,4) . " " . substr($cleanPostcode,4,3); } return $postcode; }
Useage (for both examples)
//echo formatted postcode $postcode = "cm284hy"; echo postcodeFormat($postcode); //returns CM28 4HY