Bonsoir,
j'ai un code pour lire des fichiers CSV qui fonctionne bien si les cellules sont écrites sur une seule ligne mais qui échoue si elles sont écrites sur plusieurs lignes. Peut-on me dire ce qu'il faudrait faire ?
La ligne qui définit $enclosure n'est pas de moi mais je vois que $enclosure vaut \b.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $enclosure = empty(self::$enclosure) ? chr(8) : self::$enclosure; while (($row = fgetcsv(self::$handle, $buffer, self::$separator, $enclosure)) !== false) { $key = self::$header; $value = $row; self::$data[] = array_combine($key, $value); }
Si une cellule du fichier CSV est écrite sur plusieurs lignes, j'ai ce message d'erreur :et il semblerait que ça vient du fait que seule la première ligne de la cellule du fichier CSV est prise en compte (c'est ma déduction, mais n'en suis pas sûr)Fatal error: Uncaught ValueError: array_combine(): Argument #1 ($keys) and argument #2 ($values) must have the same number of elements in C:\projets\ticket_rawsrc\model\CSVParser.php:119 Stack trace: #0 C:\projets\ticket_rawsrc\model\CSVParser.php(119): array_combine(Array, Array) #1 C:\projets\ticket_rawsrc\model\CSVImport.php(38): ticket_rawsrc\model\CSVParser::parse('C:\\projets\\tick...', 4096) #2 C:\projets\ticket_rawsrc\controller\CSVImportController.php(72): ticket_rawsrc\model\CSVImport::uploadFile('C:\\projets\\tick...') #3 C:\projets\ticket_rawsrc\index.php(112): ticket_rawsrc\controller\CSVImportController->invoke(Array) #4 {main} thrown in C:\projets\ticket_rawsrc\model\CSVParser.php on line 119
Si je fais du debug :
ça donne :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 $enclosure = empty(self::$enclosure) ? chr(8) : self::$enclosure; while (($row = fgetcsv(self::$handle, $buffer, self::$separator, $enclosure)) !== false) { $key = self::$header; $value = $row; UtilFct::debug("csvparser 99 row ",$row); //deb debug echo '<br/><br/>key count : ', count($key).'<br/>'; echo 'value count : ', count($value)."<br/><br/>"; $i=0; foreach($key as $one_key) { echo "key(".$i++.")"; var_export($one_key); echo '<br/>'; } $i=0; foreach($value as $one_value) { echo "value(".$i++.")"; var_export($one_value); echo '<br/>'; } echo "<br/><br/>"; //end debug self::$data[] = array_combine($key, $value); }alors que la cellule sur plusieurs lignes contient :csvparser 99 row
array(5) {
[0]=>
string(7) "sept-21"
[1]=>
string(3) "MEA"
[2]=>
string(2) "No"
[3]=>
string(3) "Web"
[4]=>
string(24) ""ISSUE: Opus - OE Tools\"
}
key count : 6
value count : 5
key(0)'mois de months'
key(1)'regions (1)'
key(2)'reopened'
key(3)'reported source'
key(4)'resolution'
key(5)'resolution ola status'
value(0)'sept-21'
value(1)'MEA'
value(2)'No'
value(3)'Web'
value(4)'"ISSUE: Opus - OE Tools\\'ISSUE: Opus - OE Tools CAUSE: I cannot install new OPUS Tool issue is I do not have Administrator RESOLUTION: DID USER CONFIRMED ISSUE RESOLVED: Yes To obtain more detailed information about this ticket, you just have to go to the 2929IT Portal Ho
Partager