PHP Implode地址丢失了地址的最后一部分

时间:2019-02-21 07:22:24

标签: php implode

我有以下代码,该代码需要一个位置并从中提取城市和州/国家/地区:

$address_input = "555 Test Drive, Johannesburg, South Africa";

if (strpos($address_input, ',') !== false) {
    $arr = explode(", ", $address_input);
    if(count($arr) >1){
        $arr[count($arr)-1] = explode(" ", $arr[count($arr)-1])[0];
        $address = implode(", ", array_slice($arr, -2));
    }
}

地址输出为:

“南非约翰内斯堡”,而不是“南非约翰内斯堡”。

如何像上面的示例一样修改上面的代码以返回地址的最后一部分?我看到爆破后的所有内容都用逗号隔开,但是如何获取地址的最后一部分以包含完整的州或国家/地区名称?我不知道从这里去哪里。

谢谢!

7 个答案:

答案 0 :(得分:1)

像这样吗?

Point *

答案 1 :(得分:1)

只需从分解数组中取出2和3个元素

$address_input = "555 Test Drive, Johannesburg, South Africa";

if (strpos($address_input, ',') !== false) {
    $arr = explode(", ", $address_input);
    if (count($arr) == 3)
        $address = $arr[1].', '.$arr[2];
}

答案 2 :(得分:1)

提供了输入地址将始终遵循相同的模式,并且只有要删除的地址的第一部分,才可以采用几种不同的方法-这是另一种变化:

    $address_input = "555 Test Drive, Johannesburg, South Africa";
    $arr=explode( ",", $address_input );
    if( !empty( $arr ) ){
        array_shift( $arr );
        $address_output=implode( ",", $arr );
        echo $address_output;
    }

输出:

Johannesburg, South Africa

答案 3 :(得分:1)

如果的模式与上述提到的i.e主要地址,城市和国家/地区相同,请尝试执行此操作。

$address_input = "555 Test Drive, Johannesburg, South Africa";
print_r(implode(", ", array_slice(explode(", ", $address_input), -2)));

//Output:
//Johannesburg, South Africa 

工作代码在这里:http://codepad.org/rgerYEeD

答案 4 :(得分:0)

您的代码存在问题,因为您在最后一项上有explode。您基本上是在使用South Africa,使用空格将其分割,然后使用第一个单词South并替换原始数组的最后一个条目。

$address_input = "555 Test Drive, Johannesburg, South Africa";

if (strpos($address_input, ',') !== false) {
    $arr = explode(", ", $address_input);
    if(count($arr) >1){
        //$arr[count($arr)-1] = explode(" ", $arr[count($arr)-1])[0];  // by commenting this line out, I got he results you were expecting
        $address = implode(", ", array_slice($arr, -2));
    }
}

答案 5 :(得分:0)

您可以使用substr_count来查看字符串中是否包含多个逗号。
如果存在子字符串,则使用strpos从第一个逗号+2个字符(逗号和空格)开始的字符串。
这意味着我们只进行字符串操作,而不进行数组和字符串的转换。

$address_input = "555 Test Drive, Johannesburg, South Africa";
if(substr_count($address_input, ",") >1){
    $address = substr($address_input, strpos($address_input, ",")+2);
}

echo $address;
// Johannesburg, South Africa

如果该字符串不在该模式中,则不确定该怎么办,如果需要帮助,则需要将该字符串包括在问题中。

https://3v4l.org/gGWSR

答案 6 :(得分:0)

爆炸后只需要从地址中取出2个元素,就可以删除第一个元素,并使用爆破其余数组元素

$address = "555 Test Drive, Johannesburg, South Africa";
$addressToArray = explode(',',$address);
if(is_array($addressToArray)){
  array_shift($addressToArray);
  echo implode(',',$addressToArray);
}

结果

Johannesburg, South Africa