也许有人可以帮助我获取从文本到数组的坐标?
我正在尝试使用preg_match
,但没有成功。
我可以删除geometry":{"paths":[[[**" and **]]}}]})
然后使用一些'爆炸'并获得咕咕声,但我不喜欢这个想法
坐标:
"geometry":{"paths":
[[[485749.91999999998,6108180.6500000004],
[485722.35999999999,6108206],
[485691.14000000001,6108234.3099999996],
[485400.84999999998,6108513.1500000004],
[485368.60999999999,6108545.46],
[485301.53999999998,6108613.1900000004],
[484054.82000000001,6109868.9100000001],
[484051.17566666665,6109872.6840000004]]]}}]});
答案 0 :(得分:3)
在上面的评论中找出我的方法。将字符串转换为有效的JSON。之后,您可以使用json_decode()
解码字符串:
$jsonArr = json_decode('{' . substr($string, 0, -4), true);
$coordinates= $jsonArr['geometry']['paths'][0]);
var_dump($coordinates):
所以你得到一组坐标对:
array(8) {
[0]=>
array(2) {
[0]=>
float(485749.92)
[1]=>
float(6108180.65)
}
[1]=>
array(2) {
[0]=>
float(485722.36)
[1]=>
int(6108206)
}
[2]=>
array(2) {
[0]=>
float(485691.14)
[1]=>
float(6108234.31)
}
[3]=>
array(2) {
[0]=>
float(485400.85)
[1]=>
float(6108513.15)
}
[4]=>
array(2) {
[0]=>
float(485368.61)
[1]=>
float(6108545.46)
}
[5]=>
array(2) {
[0]=>
float(485301.54)
[1]=>
float(6108613.19)
}
[6]=>
array(2) {
[0]=>
float(484054.82)
[1]=>
float(6109868.91)
}
[7]=>
array(2) {
[0]=>
float(484051.175667)
[1]=>
float(6109872.684)
}
}
答案 1 :(得分:1)
这是无效的Javascript对象表示法。通过JSONLint运行它表明它的数组长度无效。您可能希望为您的问题提供更多上下文。
假设您有类似于上述内容但使用有效 JSON,您可以使用json_decode
方法将有效的JSON字符串转换为PHP数组和对象。