3 Réponses :
Rouler votre propre fonction - c'est pas difficile:
function dumbcsv($file_handle, $data_array, $enclosure, $field_sep, $record_sep)
{
dumbescape(false, $enclosure);
$data_array=array_map('dumbescape',$data_array);
return fputs($file_handle,
$enclosure
. implode($enclosure . $field_sep . $enclosure, $data_array)
. $enclosure . $record_sep);
}
function dumbescape($in, $enclosure=false)
{
static $enc;
if ($enclosure===false) {
return str_replace($enc, '\\' . $enc, $in);
}
$enc=$enclosure;
}
$ File_handle, $ data_array, $ Coffreil, $ field_sep, $ Record_sep - pouvez-vous faire exemple de quoi les valeurs doivent être passées ... merci ... merci d'avance
$ File_handle Quelle valeur doit réussir pour cette variable @symcbean
Retour fputts ($ file_handle, $ Coffreil. Implode ($ enceinte. $. $ field_sep. $ Coffreil, $ data_array). $ Coffreil. $ Record_sep); Je reçois une erreur dans ce message de ligne: matrice à la conversion de chaîne
Une solution de contournement: supposant que vous disposiez de vos données dans une matrice à 2 dimensions, vous pouvez ajouter une chaîne qui obligera citer et vous êtes certainement contenu dans vos données ("# @ @ #" ici), puis supprimez-la. :
$fp = fopen($filename, 'w');
foreach ($data as $line => $row) {
foreach ($row as $key => $value) {
$row[$key] = $value."#@ @#";
}
fputcsv($fp, $row);
}
fclose($fp);
$contents = file_get_contents($filename);
$contents = str_replace("#@ @#", "", $contents);
file_put_contents($filename, $contents);
J'ai rencontré le même problème et je l'ai résolu comme suit.
J'ai inséré des guillemets simples à chaque valeur de la matrice.
De cette façon, lorsque vous ouvrez le fichier CSV avec Excel, la notation scientifique E + 15 ne sera plus affichée.
Ici, je vous partage comme moi. P>
Cela a fonctionné pour moi, j'espère que vous aussi.
Cordialement P>
// this function add a single quote for each member of array
function insertquote($value) {
return "'$value'";
}
# here i send each value of array
# to a insertquote function, and returns an array with new values,
# with the single quote.
foreach ($list as $ferow) {
fputcsv($fp, array_map(insertquote, $ferrow), ';');
}
Changer de sources PHP serait une option? C'est à dire. ajoute-t-il un drapeau "Fermer toujours" sur les paramètres de fonction réalisables dans votre cas?