PHP - 获取最后一个逗号后的内容

时间:2013-10-29 02:45:43

标签: php arrays

我正在尝试将地址拆分为地址+城市州。

例如:

some street name, Seattle, WA
other stree, number, something, Seattle, WA

假设地址的最后两项始终是城市,请说明......如何拆分最后一秒逗号之前的所有内容?

所以,我希望得到一个数组左右:

array[0] = some street name
array[1] = Seattle, WA

array[0] = other stree, number, something
array[1] = Seattle, WA

5 个答案:

答案 0 :(得分:1)

explode()会起作用,但请记住以下内容:您的城市/州有逗号,如果您用逗号分割,则不会进入第二个数组。 以下是代码如何工作的示例。

$str = "Some Street Name, Seattle, WA"
$array = explode(",", $str);

你的阵列看起来像这样。

array[0] = Some Street Name
array[1] = Seattle
array[2] = WA

唯一的问题是当你将字符串拆分成这些部分时,WA被放入第三个索引(数组[2])。您可以稍后轻松组合此元素。

$array[1] .= ", " . $array[2];
$array[2] = null;

然后你将离开

array[0] = Some Street Name
array[1] = Seattle, WA

编辑:如果您正在处理多个逗号,我建议您对代码采用不同的方法。我假设你在做订单,不是吗?如果是这样,请提示用表单填写信息的用户。使用单选按钮,复选框,下拉菜单等,您的数据将更容易处理。

没有真正的PHP方法来确定什么是街道地址等等,也没有真正的方法来确定会有多少逗号。

答案 1 :(得分:1)

explodearray_sliceimplode可以为您提供帮助:

function address($input) {
    $parts = explode(",", $input);
    $address = array_slice($parts, 0, count($parts) - 2);
    $city_state = array_slice($parts, count($parts) - 2);
    return array(trim(implode(",", $address)), trim(implode(",", $city_state)));
}

address("some street name, Seattle, WA");
// =>
Array
(
    [0] => some street name
    [1] => Seattle, WA
)

address("other street, number, something, Seattle, WA");
// =>
Array
(
    [0] => other street, number, something
    [1] => Seattle, WA
)

答案 2 :(得分:0)

使用正则表达式,您可以将输入分解为多个部分,记住这一点:每个字符串的结尾都是[^,]+, [^,]+行。考虑到这一点,you could formulate a regex such as this

^(.*), ([^,]+,[^,]+)$

这会将字符串分为开头 (.*)分隔符 ,城市和州 ([^,]+,[^,]+)。这将为您提供两个捕获组,并且可以成功地处理任何字符串,使得它们只是城市和州(例如:Seattle, WA)。

答案 3 :(得分:0)

使用explode并获得第一个字符串的结果

$array[0] = some street name
$array[1] = Seattle
$array[2] = WA

$cityIndex = count($array)-2;
$stateIndex = count($array)-1;

现在你可以使用它们

$array[$cityIndex].=','.$array[$stateIndex];

最后你得到了

$array[0] = some street name
$array[1] = Seattle, WA

答案 4 :(得分:0)

array_slice()将允许您在所需数组的末尾弹出多个元素,而不管总数。

$address =  'some street name, Seattle, WA';
$city_state =   array_slice(explode(',', $address), -2, 2);
print_r($city_state);

输出:数组([0] =>西雅图[1] => WA)