我使用exiftool
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
我如何分开这些?
答案 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+)?).*
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"
}