【问题标题】:getCsvControl() always returns same delimiter - PHPgetCsvControl() 总是返回相同的分隔符 - PHP
【发布时间】:2015-01-18 12:05:21
【问题描述】:
    $file = new SplFileObject('D:\BackUp\addressbook.csv');
    print_r($file->getCsvControl());

我想要做的是使用 php 找到 csv 文件的分隔符。 addressbook.csv 文件看起来像

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

另一个文件是addressbook1.csv,就像

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

一个用“,”隔开,另一个用“;”隔开但功能

  getCsvControl()

总是返回一个类似

的数组
 Array ( [0] => , [1] => " )

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

【问题讨论】:

    标签: php csv delimiter


    【解决方案1】:

    这不是错误。 SplFileObject::getCsvControl() 从不打算从 CSV 文件中检测分隔符。它仅返回默认控制字符或先前使用SplFileObject::setCsvControl() 设置的控制字符。并且使用了这个设置的CSV控制字符,如果在SplFileObject::fgetcsv()方法中没有交出任何东西。

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

    【讨论】:

    • 在这种情况下如何从 csv 文件中找到分隔符... @pazi
    • 看看彼得在另一个答案中给出的评论:“@jishan - 这可能有助于找到分隔符 - stackoverflow.com/questions/3395267/…
    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 2015-01-20
    • 2013-10-01
    • 2014-05-01
    相关资源
    最近更新 更多