getCsvControl() 总是返回相同的分隔符 - PHP


getCsvControl() always returns same delimiter - PHP

    $file = new SplFileObject('D:'BackUp'addressbook.csv');
    print_r($file->getCsvControl());

我正在尝试做的是使用 php 找到 csv 文件的分隔符。 地址簿.csv文件看起来像

  "id";"firstname";"lastname";"phone";"email"
  "1";"jishan";"ishrak";"17878";"jishan.ishrak@gmail.com"

另一个文件是地址簿1.csv就像

 "id","firstname","lastname","phone","email"
 "1","jishan","ishrak","17878","jishan.ishrak@gmail.com"

一个用","分隔,另一个用";"分隔,但函数

  getCsvControl()

总是返回一个数组,例如

 Array ( [0] => , [1] => " )

我的意思是在 [0] 索引中,它总是为两个文件提供","有没有办法解决这个问题。

这不是

一个错误。 SplFileObject::getCsvControl()绝不用于检测 CSV 文件中的分隔符。它仅返回默认控制字符或以前使用 SplFileObject::setCsvControl() 设置的字符。并且使用这组CSV控制字符,如果在SplFileObject::fgetcsv()方法中没有移交任何内容。

好吧,它的文档记录很糟糕,但这是我的第一个想法,该方法永远不会检测到字符,并且查看 php 源代码证实了这一点。

这可能是一个错误?正如你在这里看到的 PHP 文档 1st 评论 1 年前 - Seems that this function always returns the same delimiter.

更新这不是一个错误查看Pazi ツ答案。