用逗号进行php爆炸忽略千位分隔符

时间:2017-01-23 10:59:57

标签: php regex explode

我正在从外部资源中抓取以下类型的字符串,我无法改变:

["one item",0,0,2,0,1,"800.12"],
["another item",1,3,2,5,1,"1,713.59"],
(etc...)

我使用以下代码将元素分解为数组。

<?php
$id = 0;
foreach($lines AS $line) {
  $id = 0;

  // remove brackets and line end comma's
  $found_data[] = str_replace(array('],', '[',']', '"'), array('','','',''), $line);

  // add data to array
  $results[$id] = explode(',', $line);

}

第一行可以正常工作,但由于第二行使用逗号表示最后一项的千位分隔符,因此在那里失败。所以不知何故,我需要禁用爆炸来替换&#34;之间的东西。字符。

如果所有值都被&#34;包围人物,我可以使用像

这样的东西
explode('","', $line); 

然而,遗憾的是,这里并非如此:某些值被&#34;包围,有些值不是(并非总是相同的值)。所以我有点迷失方向。谁可以指出我正确的方向?

1 个答案:

答案 0 :(得分:4)

您可以在此处使用json_decode,因为您的输入字符串似乎是有效的json字符串。

$str = '["another item",1,3,2,5,1,"1,713.59"]'
$arr = json_decode($str);

然后,您可以从结果数组中访问各个索引,或使用以下命令打印整个数组:

print_r($arr);

<强>输出:

Array
(
    [0] => another item
    [1] => 1
    [2] => 3
    [3] => 2
    [4] => 5
    [5] => 1
    [6] => 1,713.59
)