2010-09-20 4 views
0
chaîne

à partir du fichier que je importe: 1,2,3,"a","b","c","1,2,3,4,5",6,7Éclate une chaîne par delimiter ignorant delimiter cite l'intérieur

sortie désirée serait un tableau divisé par la virgule, mais en ignorant toute virgule qui tombe entre guillemets doubles.

[0] = 1; 
[1] = 2; 
[2] = 3; 
[4] = "a"; 
[5] = "b"; 
[6] = "c"; 
[7] = "1,2,3,4,5"; 
[8] = 6; 
[9] = 7; 

A besoin de travailler avec PHP 5.2 et ci-dessous. Je sais que la fonction fget_csv le permet en PHP 5.3 mais ce n'est malheureusement pas une option.

Recherché assez largement et jusqu'à présent pas de solutions pour cela que je peux trouver. Des idées?

+1

fgetcsv() est disponible depuis PHP 4. – Matthew

+0

double possible (http [Une fonction explode() qui ne tient pas compte des caractères entre guillemets?]: // stackoverflow.com/questions/3264775/an-explode-function-that-ignores-characters-inside-quotes) –

Répondre

3

Vous pouvez le faire en PHP csv < 5.3:

$lines = array(); 
if (($handle = fopen('file.csv', 'r')) !== FALSE) { 
    while (($line = fgetcsv($handle, 1000, ",")) !== FALSE) { 
    $lines[] = $line; 
} 
    fclose($handle); 
} 
print_r($lines); 

/* output: 
Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
      [3] => a 
      [4] => b 
      [5] => c 
      [6] => 1,2,3,4,5 
      [7] => 6 
      [8] => 7 
     ) 

) 
*/ 
+0

c'est exactement ce dont j'avais besoin. J'essayais d'utiliser une explosion qui gâchait les choses. Merci! – Davis

Questions connexes