2017-01-23 93 views
1

我從我不能改變外部資源刮以下一種字符串:PHP用逗號爆炸無視成千上萬分隔符

["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); 

} 

對於第一行可以正常工作,但由於第二行對最後一項的千位分隔符使用逗號,所以它在那裏失敗。所以,不知何故,我需要禁用爆炸之間替換的東西「字。

如果所有值將被包圍」的人物,我可以只使用類似

explode('","', $line); 

然而,不幸的是,這不是這裏的情況:有些值被「包圍」,有些不是(不總是相同的值),所以我有點迷失在我應該如何繼續下去的任何人誰可以指引我在正確的方向嗎

+1

「的第二行使用的成千上萬逗號」 ,我看到一個點分隔符... –

+0

是數據可能格式化爲JSON?看起來這樣對我的基礎上你的例子 –

+0

@ka_lin你是什麼意思?查看最後的值,1,713.59。千位分隔符是逗號,小數點分隔符。 :) – dirk

回答

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 
) 
+1

讚賞,這工作。謝謝 :) – dirk