以通用格式转换Apple Maps坐标

Convert Apple Maps coordinates in universal format

提问人:Tim Nikischin 提问时间:4/3/2023 最后编辑:Tim Nikischin 更新时间:4/3/2023 访问量:30

问:

我想将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+)?)$/
php 正则表达式 preg-replace

评论


答:

1赞 markalex 4/3/2023 #1

你可以使用这样的东西

(-?\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

在这里演示

评论

0赞 Tim Nikischin 4/3/2023
非常感谢!这太棒了!但是,它还没有用点替换逗号(德语符号)。是否可以将其添加到正则表达式中?
1赞 markalex 4/3/2023
@TimNikischin,我的坏错过了这个问题。修正后的答案。
0赞 Tim Nikischin 4/3/2023
非常感谢您准确快速的回答!你真的做了一些很大的帮助!