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;}
	      
	        }       
	    
         }