所以我正在使用下一件事:
Array
(
[1] => NEAMT
[2] => ROMEDC ALEXANDRE
[3] => COMENKA
[4] => EXAMMS RANTEM
[5] => 6
)
输出将是:
Array
(
['JUD'] => NEAMT
['SAT'] => ROMEDC ALEXANDRE
['COM'] => COMENKA
['STR'] => EXAMMS RANTEM
['NR'] => 6
)
主要问题是$ string每次都不同,并且可以包含不同的参数,例如'SAT'可能根本不会出现在另一个字符串中,因为它被'SECTOR'取代。
所有这些都是本地化词语,如门牌号码('NR。')或城镇名称('JUD')。
我想要的是将上面的数组转换成这样的:
{{1}}
我希望你明白这个想法:
我从一个字符串'地址'得到不同的参数,如公寓号,建筑物编号等(这取决于每次客户 - 他可能住在一所房子,所以没有公寓号)所以有数组中的单词而不是数字将帮助我在不同的列中输出信息。
欢迎任何想法。
谢谢。
答案 0 :(得分:1)
$string='JUD. NEAMT, SAT ROMEDC ALEXANDRE COM. COMENKA, STR. EXAMMS RANTEM, NR.6';
//fix missing commas
$string = preg_replace('#([A-Z]+) ([A-Z]+\.)#',"$1, $2",$string);
//a trick to fix non space on `NR.6`
$string = str_replace(['.',' '],['. ',' '],$string);
//get the part seperated by comma, trim to remove spaces
$ex = array_map('trim',explode(',',$string));
//iterate over it
foreach($ex as $e){
//explode the part by space
$new = array_map('trim',explode(' ',$e));
//take the first part as key, remove spaces and dot
$key = trim(array_shift($new),' . ');
//collect via key and implode rest with a space
$coll[$key]=implode(' ',$new);
}
//done
print_r($coll);
结果:
Array
(
[JUD] => NEAMT
[SAT] => ROMEDC ALEXANDRE
[COM] => COMENKA
[STR] => EXAMMS RANTEM
[NR] => 6
)
到罗马的快车道......