Having a giant conditional statement such as the one you have posted is a
real problem for many different reasons. Below is a simple states class that
allows you to test for a state using a couple of different checks (such as
making both comparables lower or upper case). One major issue with the code
block you posted (which may or may not be a problem on your end, it could be
the email software), but these two are not comparable:
<code>
$v = "New Hampshire";
$x = "New
Hampshire";
if ($v === $x) {
echo("<pre>$v is exactly equal to $x</pre>");
} elseif ($v == $x) {
echo("<pre>$v is loosely equal to $x</pre>");
} else {
echo("<pre>$v is not exactly equal to $x</pre>");
}
</code>
This will produce: "New Hampshire is not exactly equal to New
Hampshire"
A better way to test a conditional (whether complex and/or lengthy) is to
wrap it in either a function, or a class method, like so:
<code>
<?php
class States {
var $suggest = null;
var $states = Array(
'alabama'=>true,'al'=>true,
'alaska'=>true,'ak'=>true,
'arizona'=>true,'az'=>true,
'arkansas'=>true,'ar'=>true,
'california'=>true,'ca'=>true,
'colorado'=>true,'co'=>true,
'connecticut'=>true,'ct'=>true,
'delaware'=>true,'de'=>true,
'florida'=>true,'fl'=>true,
'georgia'=>true,'ga'=>true,
'hawaii'=>true,'hi'=>true,
'idaho'=>true,'id'=>true,
'illinois'=>true,'il'=>true,
'indiana'=>true,'in'=>true,
'iowa'=>true,'ia'=>true,
'kansas'=>true,'ks'=>true,
'kentucky'=>true,'ky'=>true,
'louisiana'=>true,'la'=>true,
'maine'=>true,'me'=>true,
'maryland'=>true,'md'=>true,
'massachusetts'=>true,'ma'=>true,
'michigan'=>true,'mi'=>true,
'minnesota'=>true,'mn'=>true,
'mississippi'=>true,'ms'=>true,
'missouri'=>true,'mo'=>true,
'montana'=>true,'mt'=>true,
'nebraska'=>true,'ne'=>true,
'nevada'=>true,'nv'=>true,
'new hampshire'=>true,'nh'=>true,
'new jersey'=>true,'nj'=>true,
'new mexico'=>true,'nm'=>true,
'new york'=>true,'ny'=>true,
'north carolina'=>true,'nc'=>true,
'north dakota'=>true,'nd'=>true,
'ohio'=>true,'oh'=>true,
'oklahoma'=>true,'ok'=>true,
'oregon'=>true,'or'=>true,
'pennsylvania'=>true,'pa'=>true,
'rhode island'=>true,'ri'=>true,
'south carolina'=>true,'sc'=>true,
'south dakota'=>true,'sd'=>true,
'tennesee'=>true,'tn'=>true,
'texas'=>true,'tx'=>true,
'utah'=>true,'ut'=>true,
'vermont'=>true,'vt'=>true,
'virginia'=>true,'va'=>true,
'washington'=>true,'wa'=>true,
'west virginia'=>true,'wv'=>true,
'wisconsin'=>true,'wi'=>true,
'wyoming'=>true,'wy'=>true
);
function States() {
}
function isValid($str,$suggest) {
if ($this->states[strtolower($str)] === true) {
$this->suggest = null;
return true;
} elseif ($suggest === true && strlen($str) > 3) {
$this->doSuggest($str);
return false;
} else {
$this->suggest = null;
return false;
}
}
function doSuggest($str) {
foreach ($this->states as $state => $val) {
similar_text(strtolower($state),strtolower($str),$result);
if ($result > 85) {
$this->suggest = $state;
}
}
if (empty($this->suggest)) {
$this->suggest = null;
}
}
function isSuggested() {
return $this->suggest;
}
}
$states = new States();
$state = 'Hawii';
if ($states->isValid($state,true) === true) {
echo("<p>$state is a state.</p>");
} elseif ($suggest = $states->isSuggested()) {
echo("<p>May we suggest $suggest?</p>");
} else {
echo("<p>State not found.</p>");
}
?>
</code>
--
Jared Farrish
Intermediate Web Developer
Denton, Tx
Abraham Maslow: "If the only tool you have is a hammer, you tend to see
every problem as a nail." $$