Re: String parsing help
| From: | CPT John W. Holmes | Date: | Wed, 20 Aug 2003 20:44:00 +0000 |
| Subject: | Re: String parsing help | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-160242@lists.php.net to get a copy of this message | ||
From: "Jonatan Pugliese." <jonatan_pugliese@aca.org.ar>
> From: "Matt Matijevich" <matijevich@alliancetechnologies.net>
> > I have have a string that I need to split into 3 different variables:
> > City,State, and Zip. Here is a couple examples of the strings I need to
> > parse:
> >
> > ANCHORAGE AK 99507-6420
> > JUNEAU AK 99801
> > NORTH LITTLE ROCK AR 72118-5227
> >
> > Does anyone have an idea how I could slit this into the appropriate
> > variables, maybe some kind of regular expression? I cant use the space
> > character to split the data because some of the city names have spaces
> > in them.
>
> $vector=split( " ", $string, );
>
>
> $City=$vector[0];
> $State=$vector[1];
> $Zip=$vector[2]:
Umm, no. then you'll have $City = "North", $State = "Little" and $Zip =
"Rock" with the last example.
The following works:
<?php
$str = "NORTH LITTLE ROCK AR 72118-5227
JUNEAU AK 99801
ANCHORAGE AK 99507-6420
NORTH CARO MI 48732
";
preg_match_all('/^(.*)([a-z]{2})\s+([0-9]{5}(-[0-9]{4})?)/im',$str,$matches)
;
$count = count($matches[1]);
echo $count . ' addresses found:<br />';
for($x=0;$x<$count;$x++)
{
$city = trim($matches[1][$x]);
$state = trim($matches[2][$x]);
$zip = trim($matches[3][$x]);
echo "City: $city, State: $state, ZIP: $zip<br />";
}
?>
---John Holmes...