Version: 1.0
Type: Function
Category: Algorithms
License: GNU General Public License
Description: Validates postal code based on country (currently just us/ca/uk). postalcodevalidate($ctry,$postcode) Assumes the use of the international 2 letter country code e.g "us" for USA, "ca" for canada.
//*** validates proper postal code formats for US/CA/UK
//*** $ctry is country code & $zip is postal code
//*
//*** Use Example:
//*
//* if (postcodevalidate($ctry,$zip){
//* //produce erreur
//* } else {
//* // do nothing is valid
//* }
//*
//*
//* Check my site http://www.reponetwork.com for latest
//* version. Feel free to place a link to my site on
//* your site if you found this code useful.
//*******************************************************
function postcodevalidate($ctry,$zip){
$zip = trim($zip);
switch($ctry){
case "us":
//** <12345> or <12345>-<1234> or <12345> <1234> **
if (ereg("^[0-9]{5}$",$zip) || ereg("(^[0-9]{5})-([0-9]{4}$)",$zip) || ereg("(^[0-9]{5}) ([0-9]{4}$)",$zip)){ return false;} else { return true;}
case "ca":
//** **
if (ereg("^[a-zA-Z][0-9][a-zA-Z][[:space:]][0-9][a-zA-Z][0-9]$",$zip)){ return false;} else { return true;}
case "uk":
//** <letter><letter><1 or 2 digitnumber> <number><letter><letter> **
if (ereg("^[a-zA-Z]{2}[0-9]{1,2} [0-9][a-zA-Z]{2}+$",$zip)){ return false;} else { return true;}
default:
if (ereg("^[a-zA-Z0-9]+[a-zA-Z0-9\- ]+[a-zA-Z0-9]$",$zip) && (strlen($zip) < 15)){ return false;} else { return true;}
}
}