yidas/csv

PHP CSV 编写器与读取器,具有引号封装和编码设置

1.0.0 2021-09-06 11:01 UTC

This package is auto-updated.

Last update: 2024-09-06 17:47:37 UTC


README

PHP CSV


PHP CSV 编写器与读取器,具有引号封装和编码设置

Latest Stable Version License

特性

  • 支持为所有实体设置生成 双引号 封装

  • 支持本地方言的 编码 设置

  • 优雅的界面 用于设置和使用

概要

演示

直接指定文件名进行快速入门

// Read the CSV file
$csvReader = new yidas\csv\Reader('/tmp/file.csv');
$rows = $csvReader->readRows();
$csvReader->fclose();
// Write the CSV file
$csvWriter = new yidas\csv\Writer('/tmp/file.csv'); 
$csvWriter->writeRows($rows);
$csvWriter->fclose();

写入 CSV

打开文件并使用库以 CSV 格式写入

$fp = fopen("/tmp/file.csv", 'w');

$csvWriter = new yidas\csv\Writer($fp, [
    // 'quoteAll' => true,
    // 'encoding' => 'UTF-8'
]); 
$csvWriter->writeRow(["First", 'Second']);
$csvWriter->writeRows([
    ["Normal", 'Double"Quote'], 
    ["It's a context,\nNew line.", 'Encoded中文'],
]);

fclose($fp);

生成的 CSV 文件内容将如下所示

"First","Second"
"Normal","Double""Quote"
"It's a context,
New line.","Encoded中文"

在默认设置下,它将始终使用 UTF-8 编码添加双引号。

从 CSV 读取

使用 UTF-8 编码打开带有本地编码(Big5)的 CSV 文件并使用库读取

$fp = fopen("/tmp/file.csv", 'r');

$csvReader = new yidas\csv\Reader($fp, [
    'encoding' => 'Big5'
]); 
$firstRow = $csvReader->readRow();
$remainingRows = $csvReader->readRows();

fclose($fp);

需求

此库需要以下内容

  • PHP CLI 5.4.0+

安装

在您的项目中运行 Composer

composer require yidas/csv

然后您可以在 Composer 加载到您的 PHP 项目后使用该类

require __DIR__ . '/vendor/autoload.php';

use yidas\csv\Writer;
use yidas\csv\Reader;

使用

选项

Writer/Reader 类的参数 2 中的选项如下

quoteAll

控制何时由写入器生成引号。

Encoding

控制写入器/读取器应生成哪种编码。

默认情况下,Microsoft Excel 将使用本地编码打开 CSV 文件。例如:中文(繁体)Windows 中的 Excel 将使用 Big5 编码打开 CSV。

写入器

$csvWriter = new yidas\csv\Writer($fp, [
    // 'quoteAll' => true,
    // 'encoding' => 'UTF-8'
]); 

writeRow()

将行参数写入写入器的文件流,格式根据当前设置进行格式化。

public static array writeRow(array $rowData)

writeRows()

将行参数写入写入器的文件流,格式根据当前设置进行格式化。

public static array writeRows(array $rowsData)

读取器

$csvReader = new yidas\csv\Reader($fp, [
    // 'encoding' => 'UTF-8'
]); 

readRow()

从当前文件指针读取一行。

public static array readRow()

示例

while ( ($row = $csvReader->readRow($file) ) !== FALSE ) {
    var_dump($row);
}

readRows()

从当前文件指针读取所有行。

public static array readRows()

示例

$rows = $csvReader->readRows();
var_dump($rows);

异常

try {

    $csvWriter = new yidas\csv\Writer($fp, [
        // 'quoteAll' => true,
        // 'encoding' => 'UTF-8'
    ]); 
    $csvWriter->writeRow(["First", 'Second']);
    
} catch (\Exception $e) {

    echo 'Code:' . $e->getCode() . ' Message:' . $e->getMessage();
}

参考