3 Réponses :


9
votes

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;
 }


3 commentaires

$ 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



1
votes

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);


0 commentaires

0
votes

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), ';');
        }


0 commentaires