Je voudrais convertir une chaîne lat/lng en décimales en php. Un exemple:Geo conversion avec php
N47° 30.5951' = 47+(30.59517/60) = 47.509918333
est-il un moyen facile de le faire, l'expression régulière?
Merci
Je voudrais convertir une chaîne lat/lng en décimales en php. Un exemple:Geo conversion avec php
N47° 30.5951' = 47+(30.59517/60) = 47.509918333
est-il un moyen facile de le faire, l'expression régulière?
Merci
Vous ne pouvez pas faire de l'arithmétique dans une regex normale REPLACE, mais vous pouvez écrire une fonction de rappel et utiliser 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);
Par ailleurs, la latitude et la longitude sont généralement écrites 47 ° 30'35 "N, 123 ° 56'12" W, pour que vous puissiez régler la regex et la fonction de rappel en conséquence.
preg_match('/^N(\d+)\° (\d+(?:\.\d+)?)\'$/i', "N47° 30.5951'", $bits);
$coord = floatval($bits[1]) + (floatval($bits[2])/60);
Pardonnez mon ignorance de lat long, si je suis hors sujet.
ne sais pas si E et W appartiennent, mais sauf que:
$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);
}