Я пытаюсь собрать координаты (долгота и широта) из файла Google KML с помощью PHP.
<Point>
<coordinates>45.51088930166307,52.52216552154544</coordinates>
</Point>
Я могу разбить координаты запятой и получить результаты, как показано ниже:
[0] => 45.51088930166307
[1] => 52.52216552154544
Чтобы получить этот результат я использую:
explode(',', $coordinates);
Как мне взорвать координаты запятыми?
<Point>
<coordinates>45.51088930166307,51,52.52216552154544,75</coordinates>
</Point>
Результаты, которые мне нужны:
[0] => 45.51088930166307,51
[1] => 52.52216552154544,75
И как мне убрать цифры после запятых?
[0] => 45.51088930166307
[1] => 52.52216552154544
Спасибо,
Вы можете разделить строку запятой, за которой следуют цифры и точка:
preg_split('~,(?=\d+\.)~', $s)
Увидеть regex demo.
подробности
,
— запятая, которая …(?=\d+\.)
— сразу же с 1 или более цифрами (\d+
) и точка (\.
).$s = '45.51088930166307,51,52.52216552154544,75';
$res = preg_split('~,(?=\d+\.)~', $s);
print_r($res);
// => Array ( [0] => 45.51088930166307,51 [1] => 52.52216552154544,75 )
Решением, не являющимся регулярным выражением, является использование strpos, чтобы найти позицию второй запятой и разделить строку там.
$str = "45.51088930166307,51,52.52216552154544,75";
if(substr_count($str, ",")>1){
$pos = strpos($str, ",", strpos($str, ",")+1); // find second comma
// The inner strpos finds the first comma and uses that as the starting point to find the second comma.
$arr = [substr($str, 0,$pos), substr($str,$pos+1)]; //split string at second comma
}else{
$arr = explode(",", $str);
}
var_dump($arr);