我正在从外部资源中抓取以下类型的字符串,我无法改变:
["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;包围,有些值不是(并非总是相同的值)。所以我有点迷失方向。谁可以指出我正确的方向?
答案 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
)