从php字符串中提取纬度/经度坐标

Cas*_*ynn 3 php string extract

我需要使用php从字符串中提取纬度和经度坐标.该字符串将始终格式化为:

"(42.32783298989135, -70.99989162915041)"
Run Code Online (Sandbox Code Playgroud)

但是,每个值的长度将因使用而异.提取价值的最佳方法是什么?谢谢!

gre*_*ire 10

您可以使用sscanf执行此操作:

sscanf($string, '"(%f, %f)"', $lat, $lng);
Run Code Online (Sandbox Code Playgroud)

测试:

php > sscanf('"(42.32783298989135, -70.99989162915041)"', '"(%f, %f)"', $lat, $lng);
php > var_dump($lat, $lng);
float(42.327832989891)
float(-70.99989162915)
Run Code Online (Sandbox Code Playgroud)

  • @mfonda - 42.32783298989135,-70.99989162915041的纬度误差为1.111纳米,经度误差为0.824纳米(不确定度为1.383纳米); 42.327832989891,70.99989162915的纬度误差为111.080纳米,经度误差为82.424纳米(不确定度138.320纳米)...是的,我的意思是纳米......对于大多数用途,舍入误差的余量应该足够准确. (2认同)
  • @mfonda - 虽然使用浮点数时不可避免地存在一定程度的错误,但var_dump并不是一个特别好的衡量标准,因为在为var_dump显示转换为字符串时它将使用PHP的精度设置; 并且最后三位数(在引用的示例中)因为转换为字符串而丢失,而不是PHP中浮点的精度.将精度设置为16,并且在将float转换为字符串时,即使在32位系统上也会正确显示那些丢失的数字. (2认同)