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

hts6caw3  于 2023-04-04  发布在  PHP
关注(0)|答案(1)|浏览(113)

我想将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+)?)$/
6tqwzwtp

6tqwzwtp1#

你可以用这个

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

演示here

相关问题