PHP到CSV换行问题

时间:2012-02-10 04:36:58

标签: php csv line-breaks

我使用以下代码从表单中获取数据并将其另存为csv。

$cvsData = $name . "," . $address . "\n";

$fp = fopen("file.csv", "a");

if ($fp) {
    fwrite($fp, $cvsData); // Write information to the file
    fclose($fp); // Close the file
}

当有人在地址字段中输入逗号或换行符时,会破坏格式。那么我怎么能逃脱它以使整个地址保持在同一个领域?

2 个答案:

答案 0 :(得分:4)

将每个数据项放在引号内。引用值内的一对引号表示单引号。 e.g。

"Daniel Norton","Congress Ave.
Austin (""Keeping it weird""), TX"

参考你的例子:

$data = str_replace('"','""',$data);
$address = str_replace('"','""',$address);
$cvsData = "\"$data\",\"$address\"\n";

更好的是,只需使用PHP函数 fputcsv

fputcsv($fp,array($data,$address));

答案 1 :(得分:0)

CSV完全依赖于用于读取它的软件。

请查看http://www.csvreader.com/csv_format.php,了解某些程序对CSV数据的期望。

我创建了一个可以处理大多数情况的C​​SV类。你可能想看看它。

https://gist.github.com/1786683

要回答您的问题,请使用该课程

$csv = CSV::newExcel();
$cvsData = $csv->row($name, $address);
// etc...