2017-01-23 2 views
1

ich die folgende Art von Zeichenketten aus einer externen Quelle am Schaben, die ich nicht ändern kann:php durch Komma explodieren ignorieren Tausende seperator

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

Ich verwende den folgenden Code, um die Elemente in ein Array zu explodieren.

<?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); 

} 

Welche fein für die erste Zeile funktioniert, aber als die zweite Zeile ein Komma für die Tausende seperator des letzten Elements verwendet, ist es nicht da. Also irgendwie muss ich deaktivieren Sie die explodieren Zeug zwischen ersetzen „Zeichen.

Wenn alle Werte von umgeben sein würde“ Zeichen, ich habe gerade jedoch so etwas wie

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

verwenden könnte, leider ist das nicht der Fall hier : einige Werte sind umgeben von ", einige sind nicht (nicht immer die gleichen Werte). So bin ich ein bisschen verloren in wie ich fortfahren sollte. Wer kann mich in die richtige Richtung zeigen?

+1

'die zweite Zeile verwendet ein Komma für die Tausenden' , Ich sehe einen Punkttrenner ... –

+0

sind diese Daten vielleicht als JSON formatiert? sieht so aus zu meinem basierend auf Ihrem Beispiel –

+0

@ka_lin Was meinst du? Sehen Sie den letzten Wert, 1.713.59. Tausende Seperator ist ein Komma, Dezimaltrenner ein Punkt. :) – dirk

Antwort

4

Sie können Verwenden Sie hier json_decode, da Ihre Eingabe-Zeichenfolge eine gültige JSON-Zeichenfolge zu sein scheint

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

können Sie dann einzelne Indizes zugreifen Array resultierenden oder das gesamte Array Drucken mit:

print_r($arr); 

Ausgang:

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

Anerkannt, das funktioniert. Vielen Dank :) – dirk

Verwandte Themen