j'ai un fichier csv a réécrire
contenu du csv
400;001035;048158B2564A80;DUPONT;JEAN;;45S20;;19850601;30001231;;;UF9710;F;fr-FR;1;0;0;0;;
et je doit le transformer en fichier avec des champs de taille fixe (exemple colonne 1 longeur 3, colonne 2 14, etc..)
400001035 048158B2564A80 DUPONT
j'ai trouver la fonction qui permet ca (str_pad) mais je m'en sort pas
<?PHP
function read($csv){
$file = fopen($csv, 'r');
while (!feof($file) ) {
$line[] = fgetcsv($file, 1024, ";");
}
fclose($file);
return $line;
}
// Définir le chemin d'accès au fichier CSV
$csv = 'fichier.csv';
$csv = read($csv);
foreach($csv as $key => $value)
{
//$csv[$key]['1'] = str_pad(print_r($csv[$key]['1']),12);
// $csv[$key]['18'] = str_pad(print_r($csv[$key]['2']),24);
$csv[$key]['19'] = 'New Value3';
}
echo '<pre>';
print_r($csv);
echo '</pre>';
$fp = fopen("export.csv", "w");
foreach($csv as $fields):
fputcsv($fp, $fields);
endforeach;
fclose($fp);
?>
le print_r($csv) me donnele newvalue3 est un test mais quand je decommente les 2 lignes str_pad ca m'écrit 1 dans les champs 18 et 1 avec la bonne taille (pas visible dans le resultat plus bas)Array
(
[0] => Array
(
[0] => 400
[1] => 001035
[2] => 048158B2564A80
[3] => DUPONT
[4] => JEAN
[5] =>
[6] => 45S20
[7] =>
[8] => 19850601
[9] => 30001231
[10] =>
[11] =>
[12] => UF9710
[13] => F
[14] => fr-FR
[15] => 1
[16] => 0
[17] => 0
[18] => 0
[19] => New Value3
[20] =>
)
[1] => Array
merci de votre aide[0] => Array
(
[0] => 400
[1] => 1
[2] => 048158B2564A80
[3] => DUPONT
[4] => JEAN
[5] =>
[6] => 45S20
[7] =>
[8] => 19850601
[9] => 30001231
[10] =>
[11] =>
[12] => UF9710
[13] => F
[14] => fr-FR
[15] => 1
[16] => 0
[17] => 0
[18] => 1
[19] => New Value3
[20] =>
)
[1] => Array