从文本到数组的坐标[preg_match]

时间:2015-05-26 06:32:03

标签: php sorting

也许有人可以帮助我获取从文本到数组的坐标?

我正在尝试使用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]]]}}]});

2 个答案:

答案 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数组和对象。