fputcsv 不止一列(引号)
fputcsv more then one column (quotes)
在尝试生成 CSV 时,我想将数据分隔在多个列中,但是我只看到 A1、A2、A3 列中的数据,而不是 b 或 C 中的数据。
有什么办法可以解决这个问题吗?
我想在三个单独的列中显示姓名 X、年龄 X 和城市 X
这是一些示例代码:
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
// Disable caching
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1
header("Pragma: no-cache"); // HTTP 1.0
header("Expires: 0"); // Proxies
function outputCSV($data) {
$output = fopen($_SERVER['DOCUMENT_ROOT']."/Project_X/trunk/output/test.csv", 'w');
foreach ($data as $row) {
fputcsv($output, $row); // here you can change delimiter/enclosure
}
fclose($output);
}
outputCSV(array(
array("name 1", "age 1", "city 1"),
array("name 2", "age 2", "city 2"),
array("name 3", "age 3", "city 3")
));
编辑:测试函数:
$output = fopen($_SERVER['DOCUMENT_ROOT']."/Project_X/trunk/output/test.csv", 'w');
fputcsv($output, array("hallo;123;4"),";"); // here you can change delimiter/enclosure
fclose($output);
输出为文件:"hallo;123;4" 而不是 hallo;123;4
这样解决了:
$array = array("hallo;123;4");
$array = str_replace('"', '', $array);
fputcsv($output, $array);
您遇到此问题是因为您发送到 fputcsv
函数的数组只有一个元素。
如果您将数组传递为:
array("hallo", "123", "1"), 然后它将每个数组元素放入相关列中。
函数fputcsv
接受单个元素的数组,而不是单个数据字符串,然后使用分隔符。在你的情况下是一个分号。使用上面的数组,正确的用法是:
fputcsv($output, array("hallo", "123", "1"), ';');
即:文件的文件句柄,单个元素的数组,不是拼接字符串的数组,然后是文件中要使用的分隔符(这里什么都不用逗号) .
在尝试生成 CSV 时,我想将数据分隔在多个列中,但是我只看到 A1、A2、A3 列中的数据,而不是 b 或 C 中的数据。
有什么办法可以解决这个问题吗?
我想在三个单独的列中显示姓名 X、年龄 X 和城市 X
这是一些示例代码:
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
// Disable caching
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1
header("Pragma: no-cache"); // HTTP 1.0
header("Expires: 0"); // Proxies
function outputCSV($data) {
$output = fopen($_SERVER['DOCUMENT_ROOT']."/Project_X/trunk/output/test.csv", 'w');
foreach ($data as $row) {
fputcsv($output, $row); // here you can change delimiter/enclosure
}
fclose($output);
}
outputCSV(array(
array("name 1", "age 1", "city 1"),
array("name 2", "age 2", "city 2"),
array("name 3", "age 3", "city 3")
));
编辑:测试函数:
$output = fopen($_SERVER['DOCUMENT_ROOT']."/Project_X/trunk/output/test.csv", 'w');
fputcsv($output, array("hallo;123;4"),";"); // here you can change delimiter/enclosure
fclose($output);
输出为文件:"hallo;123;4" 而不是 hallo;123;4
这样解决了:
$array = array("hallo;123;4");
$array = str_replace('"', '', $array);
fputcsv($output, $array);
您遇到此问题是因为您发送到 fputcsv
函数的数组只有一个元素。
如果您将数组传递为: array("hallo", "123", "1"), 然后它将每个数组元素放入相关列中。
函数fputcsv
接受单个元素的数组,而不是单个数据字符串,然后使用分隔符。在你的情况下是一个分号。使用上面的数组,正确的用法是:
fputcsv($output, array("hallo", "123", "1"), ';');
即:文件的文件句柄,单个元素的数组,不是拼接字符串的数组,然后是文件中要使用的分隔符(这里什么都不用逗号) .