提问人:Tim Nikischin 提问时间:4/3/2023 最后编辑:Tim Nikischin 更新时间:4/3/2023 访问量:30
以通用格式转换Apple Maps坐标
Convert Apple Maps coordinates in universal format
问:
我想将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+)?)$/
答:
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
非常感谢您准确快速的回答!你真的做了一些很大的帮助!
评论