我有以下代码,该代码需要一个位置并从中提取城市和州/国家/地区:
$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));
}
}
地址输出为:
“南非约翰内斯堡”,而不是“南非约翰内斯堡”。
如何像上面的示例一样修改上面的代码以返回地址的最后一部分?我看到爆破后的所有内容都用逗号隔开,但是如何获取地址的最后一部分以包含完整的州或国家/地区名称?我不知道从这里去哪里。
谢谢!
答案 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
如果该字符串不在该模式中,则不确定该怎么办,如果需要帮助,则需要将该字符串包括在问题中。
答案 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