按照特定格式从完整地址字符串中提取城市和州
Extract City and State from a Full Address String following Specific Format
我有一组地址存储为单独的字符串。以下是这些字符串的可能值:
"Staples Center, 555 Test Drive, Los Angeles, CA 98112"
"555 Test Drive, Los Angeles, CA 98112"
"Los Angeles, CA"
"Los Angeles, CA 98112"
"Los Angeles"
日期将始终遵循此格式,其中可以包含场地名称、街道地址、城市、州和邮政编码
我只想从这些字符串中动态提取城市和州:
$addresses_array = array(
"Staples Center, 555 Test Drive, Los Angeles, CA 98112",
"555 Test Drive, Los Angeles, CA 98112",
"Los Angeles, CA",
"Los Angeles, CA 98112",
"Los Angeles"
);
foreach ($addresses_array as $address) {
if (strpos($address, ',') !== false) {
// extract the city and state
}
}
鉴于地址值的模式,我可以根据逗号提取城市和州吗?
我能看到的是,城市永远是字符串中的最后一个逗号..
可以一起使用explode
和count
函数
$addresses_array = array(
"Staples Center, 555 Test Drive, Los Angeles, CA 98112",
"555 Test Drive, Los Angeles, CA 98112",
"Los Angeles, CA",
"Los Angeles, CA 98112",
"Los Angeles"
);
foreach ($addresses_array as $address) {
$addr = explode(",",$address);
switch (count($addr))
{
case 1:
case 2:
echo $addr[0];
break;
case 3:
echo $addr[1];
break;
case 4:
echo $addr[2];
break;
}
}
如果我没看错,那么您需要最后两项(如果有的话)。
使用 explode 然后内爆返回最后两个项目。
$addresses_array = array(
"Staples Center, 555 Test Drive, Los Angeles, CA 98112",
"555 Test Drive, Los Angeles, CA 98112",
"Los Angeles, CA",
"Los Angeles, CA 98112",
"Los Angeles"
);
foreach ($addresses_array as &$address) {
$arr = explode(", ", $address);
$address = implode(", ", array_slice($arr, -2));
}
var_dump($addresses_array);
输出:
array(5) {
[0]=>
string(21) "Los Angeles, CA 98112"
[1]=>
string(21) "Los Angeles, CA 98112"
[2]=>
string(15) "Los Angeles, CA"
[3]=>
string(21) "Los Angeles, CA 98112"
[4]=>
&string(11) "Los Angeles"
}
如果你不想要 zip,那么你可以在 space 上展开最后一个项目,如果 $arr 计数超过一个。
foreach ($addresses_array as &$address) {
$arr = explode(", ", $address);
if(count($arr) >1){
$arr[count($arr)-1] = explode(" ", $arr[count($arr)-1])[0];
$address = implode(", ", array_slice($arr, -2));
}
}
输出:
array(5) {
[0]=>
string(15) "Los Angeles, CA"
[1]=>
string(15) "Los Angeles, CA"
[2]=>
string(15) "Los Angeles, CA"
[3]=>
string(15) "Los Angeles, CA"
[4]=>
&string(11) "Los Angeles"
}
我有一组地址存储为单独的字符串。以下是这些字符串的可能值:
"Staples Center, 555 Test Drive, Los Angeles, CA 98112"
"555 Test Drive, Los Angeles, CA 98112"
"Los Angeles, CA"
"Los Angeles, CA 98112"
"Los Angeles"
日期将始终遵循此格式,其中可以包含场地名称、街道地址、城市、州和邮政编码
我只想从这些字符串中动态提取城市和州:
$addresses_array = array(
"Staples Center, 555 Test Drive, Los Angeles, CA 98112",
"555 Test Drive, Los Angeles, CA 98112",
"Los Angeles, CA",
"Los Angeles, CA 98112",
"Los Angeles"
);
foreach ($addresses_array as $address) {
if (strpos($address, ',') !== false) {
// extract the city and state
}
}
鉴于地址值的模式,我可以根据逗号提取城市和州吗?
我能看到的是,城市永远是字符串中的最后一个逗号..
可以一起使用explode
和count
函数
$addresses_array = array(
"Staples Center, 555 Test Drive, Los Angeles, CA 98112",
"555 Test Drive, Los Angeles, CA 98112",
"Los Angeles, CA",
"Los Angeles, CA 98112",
"Los Angeles"
);
foreach ($addresses_array as $address) {
$addr = explode(",",$address);
switch (count($addr))
{
case 1:
case 2:
echo $addr[0];
break;
case 3:
echo $addr[1];
break;
case 4:
echo $addr[2];
break;
}
}
如果我没看错,那么您需要最后两项(如果有的话)。
使用 explode 然后内爆返回最后两个项目。
$addresses_array = array(
"Staples Center, 555 Test Drive, Los Angeles, CA 98112",
"555 Test Drive, Los Angeles, CA 98112",
"Los Angeles, CA",
"Los Angeles, CA 98112",
"Los Angeles"
);
foreach ($addresses_array as &$address) {
$arr = explode(", ", $address);
$address = implode(", ", array_slice($arr, -2));
}
var_dump($addresses_array);
输出:
array(5) {
[0]=>
string(21) "Los Angeles, CA 98112"
[1]=>
string(21) "Los Angeles, CA 98112"
[2]=>
string(15) "Los Angeles, CA"
[3]=>
string(21) "Los Angeles, CA 98112"
[4]=>
&string(11) "Los Angeles"
}
如果你不想要 zip,那么你可以在 space 上展开最后一个项目,如果 $arr 计数超过一个。
foreach ($addresses_array as &$address) {
$arr = explode(", ", $address);
if(count($arr) >1){
$arr[count($arr)-1] = explode(" ", $arr[count($arr)-1])[0];
$address = implode(", ", array_slice($arr, -2));
}
}
输出:
array(5) {
[0]=>
string(15) "Los Angeles, CA"
[1]=>
string(15) "Los Angeles, CA"
[2]=>
string(15) "Los Angeles, CA"
[3]=>
string(15) "Los Angeles, CA"
[4]=>
&string(11) "Los Angeles"
}