"Alabama", 'AK'=>"Alaska", 'AZ'=>"Arizona", 'AR'=>"Arkansas", 'CA'=>"California", 'CO'=>"Colorado", 'CT'=>"Connecticut", 'DE'=>"Delaware", 'DC'=>"District Of Columbia", 'FL'=>"Florida", 'GA'=>"Georgia", 'HI'=>"Hawaii", 'ID'=>"Idaho", 'IL'=>"Illinois", 'IN'=>"Indiana", 'IA'=>"Iowa", 'KS'=>"Kansas", 'KY'=>"Kentucky", 'LA'=>"Louisiana", 'ME'=>"Maine", 'MD'=>"Maryland", 'MA'=>"Massachusetts", 'MI'=>"Michigan", 'MN'=>"Minnesota", 'MS'=>"Mississippi", 'MO'=>"Missouri", 'MT'=>"Montana", 'NE'=>"Nebraska", 'NV'=>"Nevada", 'NH'=>"New Hampshire", 'NJ'=>"New Jersey", 'NM'=>"New Mexico", 'NY'=>"New York", 'NC'=>"North Carolina", 'ND'=>"North Dakota", 'OH'=>"Ohio", 'OK'=>"Oklahoma", 'OR'=>"Oregon", 'PA'=>"Pennsylvania", 'RI'=>"Rhode Island", 'SC'=>"South Carolina", 'SD'=>"South Dakota", 'TN'=>"Tennessee", 'TX'=>"Texas", 'UT'=>"Utah", 'VT'=>"Vermont", 'VA'=>"Virginia", 'WA'=>"Washington", 'WV'=>"West Virginia", 'WI'=>"Wisconsin", 'WY'=>"Wyoming"); // lets see if the camma forms a valid state and city if(strstr($str,',')){ $parts = explode(',',$str); $state = trim($parts[1],", "); $city = trim($parts[0],", "); } if(!array_key_exists(strtoupper($state),$state_list) && !in_array(ucwords(strtolower($state)),$state_list)){ $parts = preg_split("/[\s,;]+/",$str); $state = array_pop($parts); // first see if the last array element is a state abbreviation if(strlen($state) == 2 && array_key_exists(strtoupper($state),$state_list)){ $state = strtoupper($state); $city = implode(' ',$parts); } else { // since it's not an abbreviation let's see if the last element is the full name of a state if(in_array(ucwords(strtolower($state)),$state_list)){ $state = ucwords(strtolower($state)); $city = implode(' ',$parts); //check if this could be the wrong state (i.e. virginia could be west virginia) if(in_array(ucwords(strtolower($parts[count($parts)-1] . ' ' . $state)),$state_list)){ $state = ucwords(strtolower(array_pop($parts) . ' ' . $state)); $city = implode(' ',$parts); } } else { // we need at least 2 words left to continue if(count($parts) < 2) return false; $state = array_pop($parts) . ' ' . $state; if(in_array(ucwords(strtolower($state)),$state_list)){ $state = ucwords(strtolower($state)); $city = implode(' ',$parts); } else { // we need at least 2 words left to continue if(count($parts) < 2) return false; // check if the 3rd word from the end forms a valid state name $state = array_pop($parts) . ' ' . $state; if(in_array(ucwords(strtolower($state)),$state_list)){ $state = ucwords(strtolower($state)); $city = implode(' ',$parts); } else { return false; } } } $state = array_search($state,$state_list); } } // Here we can query the result against a database to make sure it's valid. Ignore this section if you don't want to check against a database. /*$sql = 'SELECT `city`,`state` FROM `city_state` WHERE `city`="'.$city.'" and `state`="'.$state.'"'; $result = mysql_query($sql); if(mysql_num_rows($result) > 0){ return array('city'=>mysql_result($result,0,'city'),'state'=>mysql_result($result,0,'state')); } else { return false; }*/ return array('city'=>$city,'state'=>$state); } if(isset($_GET['location'])){ $str = $_GET['location']; $parsed = parseLocation($str); if($parsed == false){ print "Error: Invalid string entered

"; } else { print 'Your city is '.$parsed['city'].', '.$parsed['state'].'

'; } } print '
Enter a location to be parsed:
'; ?>