php生成分号分隔的csv显示一列中的所有值

时间:2017-07-29 06:40:10

标签: php csv fputcsv

我希望在生成CSV时使用不同的分隔符。当我尝试使用逗号然后它工作正常意味着所有值显示在不同的列但是当我尝试其他分隔符时;或者然后它显示一列中的所有值。以下代码在一列中显示所有列的数据。

$csv_filename = $this->saveFileToDirectory.$this->fileName;
$fp = fopen ($csv_filename, "w");
fputcsv($fp, $this->headerArr);
foreach ($this->data as $key => $value) {
    if(is_array($value)) {
        $csvData = $this->makeStringFromArr($value);
        fputcsv($fp, explode(";",$csvData),";");
    }
}
fclose($fp);

$ csvData值跟随

  

“保证可用性;保证可用性;保证   可用性;;我的;保证可用性   ; 34.5 ;;蓝色; 80463259; VERY_GOOD; H1078; N; sss;虚拟值;保证   可用性;“14.50,34.50& Acirc;°,”;保证   可用性; SDF“

如果我替换以下行,则它不会以CSV格式显示数据

fputcsv($fp, $csvData,';');

以下是样本CSV

enter image description here

有什么建议吗?我做错了什么或者它是对的,当用其他分隔符导出时,在一列中可见而不是逗号?

1 个答案:

答案 0 :(得分:-1)

试试此代码......

$file_handle = fopen('/var/www/demo.csv', 'w');

// save header for csv | if you want title for your column
// $header_title = ['column_1', 'column_2'];
// fputs($file_handle, implode(",", array_map("encodeFunc", $header_title)) . "\r\n");


$csv_data = ["valu1", "value12"];
fputs($file_handle, implode(",", array_map("encodeFunc", $csv_data)) . "\r\n");
fclose($file_handle);


function encodeFunc($value) {
    ///remove any ESCAPED double quotes within string.
    $value = str_replace('\\"', '', $value);

    //then force escape these same double quotes And Any UNESCAPED Ones.
    $value = str_replace('"', '', $value);

  //force wrap value in quotes and return
    return '"' . $value . '"';
}