jensostertag / csvreader

PHP CSV 文件读取库

1.0.0 2023-07-15 15:39 UTC

This package is not auto-updated.

Last update: 2024-09-23 17:37:32 UTC


README

这是一个易于读取 CSV 文件的 PHP 库。

安装

要安装此库,请使用 composer 将其包含到您的项目中

{
    "require": {
        "jensostertag/csvreader": "1.0.0"
    }
}

用法

读取 CSV 文件中的所有条目

要从 CSV 文件中读取所有条目,请使用以下代码

$csvReader = new CSVReader();

// CSV Reader Options
$csvReader->setFile("path/to/file.csv")
          ->setHeader(false)
          ->setDelimiter(";")
          ->setMaxLineLength(null)
          ->read();

// Get the CSV Data
$data = $csvReader->getData();

您可以使用 setHeader(bool $header) 方法来指定 CSV 文件是否包含标题。如果该方法使用 true 作为参数调用,则第一行将被跳过且不会返回到 $data 数组中。默认情况下,假定没有标题。

除了显式设置分隔符外,您还可以使用 detectDelimiter() 方法。此方法使用 CSV 文件的第一行来检测 ,;\t| 中哪一个出现频率最高,并将其用作分隔符。

警告:如果 CSV 文件的第一行中 ,;\t| 的出现频率高于实际分隔符,则该方法将无法检测到正确的分隔符。

例如,如果 CSV 文件如下所示

name;age;city
Alice;25;New York
Bob;30;London
Charlie;20;Berlin
David;35;Paris
Frank;40;Tokyo

返回的 $data 数组将是

[
    [
        "name",
        "age",
        "city"
    ],
    [
        "Alice",
        "25",
        "New York"
    ],
    [
        "Bob",
        "30",
        "London"
    ],
    [
        "Charlie",
        "20",
        "Berlin"
    ],
    [
        "David",
        "35",
        "Paris"
    ],
    [
        "Frank",
        "40",
        "Tokyo"
    ]
]

如果您使用 true 作为参数调用 setHeader(bool $header) 方法,则第一行的内容将不会包含在 $data 数组中

[
    [
        "Alice",
        "25",
        "New York"
    ],
    [
        "Bob",
        "30",
        "London"
    ],
    [
        "Charlie",
        "20",
        "Berlin"
    ],
    [
        "David",
        "35",
        "Paris"
    ],
    [
        "Frank",
        "40",
        "Tokyo"
    ]
]