将Apple Maps坐标转换为通用格式



我想将Apple Maps中显示的坐标转换为

38,89016° N, 1,22427° O

(德国符号)

38.89016° N, 1.22427° E

(英语表示法)

变成了

38.89016, 1.22427

(预期结果),但只有当用户输入匹配此模式的表达式时,而不是当用户在输入字段中输入地址或其他东西时。

因此我将使用PHP preg_replace()

然而,我有困难建立一个匹配的正则表达式,并想知道是否有人已经找到了解决方案?

*我已经尝试过不同的正则表达式变化在我自己的已经,这是我最后一个实验,但没有工作如预期的,因为它没有取代任何东西:

$regex = "/^(d{1,2}[.,]d+)s*[°]s*(N|S)s*[,]s*(d{1,3}[.,]d+)s*[°]s*(E|O|W)$/i";
$output = preg_replace($regex, "$1, $3", $input);

我有一个正则表达式验证,预期的结果是正确的形式,它确实按预期工作,虽然我无法修改它的替换:

/^[-+]?([1-8]?d(.d+)?|90(.0+)?),s*[-+]?(180(.0+)?|((1[0-7]d)|([1-9]?d))(.d+)?)$/

你可以这样写

(-?d*)[.,](d*)° [NS], (-?d*)[.,](d*)° [EOW]

替换字符串$1.$2, $3.$4.

$re = '/(-?d*)[.,](d*)° [NS], (-?d*)[.,](d*)° [EOW]/m';
$str = '38,89016° N, 1,22427° O
38.89016° N, 1.22427° E
-38.89016° S, 1.22427° E
Address: Some street, 123, 21
';
$subst = "$1.$2, $3.$4";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;

输出:

The result of the substitution is 38.89016, 1.22427
38.89016, 1.22427
-38.89016, 1.22427
Address: Some street, 123, 21

演示

最新更新