2011-10-09 3 views
0

j'ai pour analyser une « problématique » fichier CSV comme ceci:Comment analyser une « problématique » CSV en PHP

some text here 
other line of text, here 
header1, header2, header3 
value1, value2, value3 // data row #1 
value1, value2, value3 // data row #2 
(empty line) 
(empty line) 
some other text here 

Bien sûr, je suis seulement intéressé par les lignes (valeur1, valeur2 et valeur3) cela contient en fait des données précieuses. J'ai essayé de chercher l'URL dans une chaîne et que appeler str_getcsv (paramètres par défaut), mais ce que je reçois est un tableau qui est difficile à travailler avec:

array 
    0 => string 'some text here ' (length=50) 
    1 => string ' other text here 
other text here 
header1 ' (length=50) 
    2 => string 'header2' (length=13) 
    3 => string 'header3' (length=14) 
    4 => string 'header4' (length=14) 
    5 => string ' 
value1' (length=2) 
    6 => string 'value2' (length=1) 
    7 => string 'value3' (length=1) 
    8 => string 'value4 
+0

Ce fichier CSV n'est pas valide. Vous devez résoudre les problèmes (c'est-à-dire supprimer les lignes non valides) avant de pouvoir utiliser fgetcsv. – ThiefMaster

+0

@ThiefMaster je sais. Vous pensez que je dois sauter les 2 premières lignes au début et les lignes de fuite? – gremo

Répondre

1

Si cette structure est fixe, vous pourrait faire un tableau de lignes et ensuite utiliser la 4ème et 5ème ligne. Essayez cette $file est une variable avec le contenu que vous voulez analyser.

$lines = array(); 
foreach(preg_split("/(\r?\n)/", $file) as $line){ 
    $lines[] = $line; 
} 
$data_row1 = explode(',', $lines[3]); 
$data_row1 = explode(',', $lines[4]); 
+1

Pas si fixe mais oui, j'ai essayé et fonctionne bien. Merci pour le conseil. Le plus drôle est que ce csv invalide provient d'un site gouvernemental. LOL. – gremo

Questions connexes