PHP 到 CSV 换行符问题

Aja*_*jay 3 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
}
Run Code Online (Sandbox Code Playgroud)

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

dan*_*ton 5

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

"Daniel Norton","Congress Ave.
Austin (""Keeping it weird""), TX"
Run Code Online (Sandbox Code Playgroud)

参考你的例子:

$data = str_replace('"','""',$data);
$address = str_replace('"','""',$address);
$cvsData = "\"$data\",\"$address\"\n";
Run Code Online (Sandbox Code Playgroud)

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

fputcsv($fp,array($data,$address));
Run Code Online (Sandbox Code Playgroud)