2012-03-26 4 views
1

Ich habe eine CSV-Datei mit den Folowing Linien (2 zum Beispiel):Wie teile ich eine Zeichenfolge von einer CSV-Datei in ein Pariqular-Format in PHP?

004000001001030212001Y 5372 #0001 N,"1","2","3","4","5","5","0" 

004000002001030212001Y 5372 #0001 N,"1","2","3","4","5","5","0" 

Was ich tun möchte, ist die CSV-Datei in PHP zu lesen und es dann in der folgenden Art und Weise neu formatiert:

id date    lp Lang token cod1 cod2 cod3 cod4 cod5 cod6 cod7 

1 03/02/2012 18:00 2 el  grapto 1  2  3  4  5  5  0 

2 03/02/2012 18:00 2 el  grapto 1  2  3  4  5  5  0 

Die ID ist die 8. und 9. Stelle. Datum ist die 13. bis 18. Stelle. Und dann wieder in CSV exportieren.

Jede Hilfe reicht. Dank

Antwort

1

Es gibt fgetcsv für Sachen wie diese

http://sg2.php.net/manual/en/function.fgetcsv.php

id und stammen aus dieser langen Reihe bekommen Sie tun können:

$id = substr($longString, 8, 2); 
$dateStr = substr($longString, 13, 8); 
$date = substr($dateStr, 0, 2) . '/' . substr($dateStr, 2, 2) . '/' . substr($dateStr, 4, 4); 

Jetzt gehen und implementieren :)

0

Nicht sicher, wie Sie 18:00 2 el grapto von diesen Eingängen erhalten, aber das wird die anderen Sachen tun:

$lines = explode("\n", $file); 
echo "id date Ip Lang token cod1 cod2 cod3 cod4 cod5 cod6 cod7\n"; 
foreach ($lines as $line) 
{ 
    $values = explode(",", $line); 
    $string = array_shift($values); 

    $values = array_map(function($value) { return str_replace("\"", "", $value); }, $values); 

    $id = substr($string, 7, 2); 

    $date = date_parse_from_format("mdy", substr($string, 12, 6)); 
    $date = date("m/d/Y", mktime(0, 0, 0, $date["month"], $date["day"], $date["year"])); 

    list(, $ip, $lang, $token) = explode(" ", $string); 

    array_unshift($values, $id, $date, $ip, $lang, $token); 

    echo implode(" ", $values) ."\n"; 
} 

Ausgänge:

id date Ip Lang token cod1 cod2 cod3 cod4 cod5 cod6 cod7 
01 03/02/2012 5372 #0001 N 1 2 3 4 5 5 0 
02 03/02/2012 5372 #0001 N 1 2 3 4 5 5 0 
+0

Ich bin geting die folgende Fehlermeldung: Parse error: Syntaxfehler, unerwartete T_FUNCTION, erwartet ')' in /home/Oo4QrE/prog.php on line 8 – user1293536

+0

Wenn ich meinen Code in ein leeres PHP-Skript kopiere und einfüge, bekomme ich keine Fehler. Es muss einen Fehler irgendwo anders in Ihrem Code geben, wahrscheinlich ein vergessenes Semikolon oder eine geschweifte Klammer. Können Sie Ihren tatsächlichen Code (mindestens bis Zeile 8) in Ihre Frage kopieren und einfügen, damit ich ihn für Sie aufspüren kann? – Travesty3

Verwandte Themen