我想在php中将lat / lng字符串转换为小数。 一个例子:
N47° 30.5951' = 47+(30.59517/60) = 47.509918333
有没有简单的方法可以做到这一点,正则表达式?
由于
答案 0 :(得分:1)
不确定E和W是否属于此处,但除此之外:
$regex = "/[EWNS](\d{1,3})°\ (\d{1,3}\.\d{0,10})'/";
if (preg_match($regex, "N47° 30.5951'", $matches))
{
$result = $matches[1] + ((float) $matches[2] / 60);
}
答案 1 :(得分:0)
你不能在正常的正则表达式替换中进行算术运算,但你可以编写一个回调函数并使用preg_replace_callback。
function matches_to_decimal($matches) {
return $matches[2] + ($matches[3]/60);
}
$inputString = "N47° 30.5951'";
$resultDecimal = preg_replace_callback('/(N|S)(\d+)° (\d+\.?\d*)\'/',
"matches_to_decimal",
$inputString);
顺便说一句,纬度和经度通常写成47°30'35“N,123°56'12”W,所以你可以相应地调整正则表达式和回调函数。
答案 2 :(得分:0)
preg_match('/^N(\d+)\° (\d+(?:\.\d+)?)\'$/i', "N47° 30.5951'", $bits);
$coord = floatval($bits[1]) + (floatval($bits[2])/60);
原谅我对拉特的无知,如果我不合时宜的话。