我们如何在php中分离度数分钟

时间:2016-08-22 07:48:38

标签: php regex

我使用exiftool

获取如下所示的GPS纬度和经度
  GPS Latitude                    : 22 deg 44' 42.36" N
  GPS Longitude                   : 75 deg 53' 33.00" E

我需要将22 deg 44' 42.36" N分成

22 deg

44 minutes

42.36 second

有时格式化为110° 29' 01.1

我如何分开这些?

2 个答案:

答案 0 :(得分:2)

如果输入的格式始终与您显示的方式相同,则可以简单地按空格分割,然后再进行一些格式化。

$parts = explode(" ",$str);

$latlong['deg'] = $parts[0]." deg";
$latlong['min'] = str_replace("'","",$parts[2])." minutes";
$latlong['seconds'] = str_replace("'","",$parts[3])." seconds";

print_r($latlong);

然后可以将其包装在函数中并添加一些验证测试(is_numeric,..)

答案 1 :(得分:2)

使用正则表达式,你可以匹配并替换这个:

(?m)^[^:]+: *(\d+)(?: *deg|°) +(\d+)\' +(\d+(?:\.\d+)?).*

Live demo

PHP代码:

<?php

$input = <<< STR
    GPS Latitude                    : 22 deg 44' 42.36" N
    GPS Longitude                   : 75 deg 53' 33.00" E
    GPS Longitude                   : 110° 29' 01.1
STR;

$coords = explode("\n", preg_replace('~(?m)^[^:]+: *(\d+)(?: *deg|°) +(\d+)\' +(\d+(?:\.\d+)?).*~', '\1 deg \2 mintues \3 seconds', $input));

var_dump($coords);

输出:

array(3) {
  [0]=>
  string(31) "22 deg 44 mintues 42.36 seconds"
  [1]=>
  string(31) "75 deg 53 mintues 33.00 seconds"
  [2]=>
  string(31) "110 deg 29 mintues 01.1 seconds"
}