PHP fputcsv 函数
最后修改于 2025 年 4 月 3 日
PHP 的 fputcsv 函数将一行格式化为 CSV 并将其写入文件。它负责正确转义特殊字符和分隔符。
基本定义
fputcsv 函数将一个数组作为 CSV 行写入一个打开的文件。它接受文件句柄、数据数组和可选的 CSV 设置作为参数。
语法:fputcsv(resource $handle, array $fields, string $delimiter = ",", string $enclosure = '"', string $escape_char = "\\"): int|false。
基本的 fputcsv 示例
这展示了 fputcsv 将数据写入文件的最简单用法。
basic_fputcsv.php
<?php
declare(strict_types=1);
$data = ['Name', 'Email', 'Phone'];
$file = fopen('contacts.csv', 'w');
if ($file !== false) {
fputcsv($file, $data);
fclose($file);
echo "CSV file created successfully.";
}
这将创建一个带有标题行的 CSV 文件。如果需要,该函数会自动处理引号和特殊字符的转义。
写入多行
您可以通过在循环中调用 fputcsv 来写入多行。
multiple_rows.php
<?php
declare(strict_types=1);
$users = [
['John Doe', 'john@example.com', '555-1234'],
['Jane Smith', 'jane@example.com', '555-5678']
];
$file = fopen('users.csv', 'w');
if ($file !== false) {
foreach ($users as $user) {
fputcsv($file, $user);
}
fclose($file);
echo "User data exported to CSV.";
}
这会将两行用户数据写入 CSV 文件。每个数组元素都成为 CSV 行中的一列。
自定义分隔符和引号
您可以为特殊格式指定自定义分隔符和引号字符。
custom_format.php
<?php
declare(strict_types=1);
$data = ['Product', 'Price', 'Stock'];
$products = [
['Laptop', '999.99', '15'],
['Mouse', '24.95', '42']
];
$file = fopen('inventory.tsv', 'w');
if ($file !== false) {
fputcsv($file, $data, "\t");
foreach ($products as $product) {
fputcsv($file, $product, "\t");
}
fclose($file);
echo "TSV file created with tab delimiter.";
}
这将创建一个 TSV(制表符分隔值)文件而不是 CSV。第三个参数指定制表符作为分隔符。
处理特殊字符
fputcsv 会自动处理包含分隔符或引号的字段。
special_chars.php
<?php
declare(strict_types=1);
$problematicData = [
['ID', 'Description'],
[1, 'Item with "quotes"'],
[2, 'Comma, in description']
];
$file = fopen('special.csv', 'w');
if ($file !== false) {
foreach ($problematicData as $row) {
fputcsv($file, $row);
}
fclose($file);
echo "CSV with special characters created.";
}
该函数可以正确转义数据中的引号和逗号。生成的 CSV 将被正确格式化以供解析。
使用不同的转义字符
您可以在特殊情况下指定自定义转义字符。
custom_escape.php
<?php
declare(strict_types=1);
$data = [
['ID', 'Text'],
[1, 'This contains "quotes"'],
[2, 'Back\\slash example']
];
$file = fopen('escape_example.csv', 'w');
if ($file !== false) {
foreach ($data as $row) {
fputcsv($file, $row, ',', '"', '/');
}
fclose($file);
echo "CSV with custom escape character created.";
}
在这里,我们使用斜杠作为转义字符,而不是默认的反斜杠。这对于特定的 CSV 解析要求可能很有用。
最佳实践
- 错误处理:始终检查文件是否打开成功。
- 资源清理:完成后使用 fclose 关闭文件。
- 内存效率:分块处理大型数据集。
- 验证:在写入 CSV 之前对数据进行清理。
- 标题:考虑先添加列标题。
来源
本教程介绍了 PHP 的 fputcsv 函数,并通过实际示例展示了其在不同 CSV 写入场景中的用法。
作者
列出 所有 PHP 文件系统函数。