编程语言
首页 > 编程语言> > 在PHP中确定.csv分隔符

在PHP中确定.csv分隔符

作者:互联网

注意:我首先要说的是,我知道我可能错过了一些非常明显的东西.我在其中一个编码阴霾中,我看不到简单的解决方案.

问题:我在PHP中编写了一个脚本来解析.csv文件,选择包含电子邮件地址的列,并将它们放入数据库中.现在,我发现用户正在尝试上传具有.csv文件类型但实际上不以逗号分隔的文件.我正在尝试编写一个能够正确确定分隔符(制表符,新行,空格等)的函数,但是遇到了一些问题.我想我想获得所有这些地址的数组,以便键的数量可以增加该分隔符的可信度.

代码:

$filename = "../some/path/test.csv";   
if (($handle = fopen($fileName, "r")) !== FALSE) {
    $delimiters = array(',', ' ', "\t", "\n");
    $delimNum = 0;
    foreach ($delimiters as $delimiter) {
      $row = 0;
      while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
        $data = (string)$data[0];
        $delimiterList[$delimNum] = explode($delimiter, $data);
        $row++;
    }
    $delimNum++;
}
die(print_r($delimiterList));
}

结果:

Array
(
[0] => Array
    (
        [0] => email
peter.parker@example.com
atticus.finch@example.com
steve.rogers@example.com
phileas.fogg@example.com
s.winston@example.com
paul.revere@example.com
fscott.fitzgerald@example.com
jules.verne@example.com
martin.luther@example.com
ulysses.grant@example.com
tony.stark@example.com
    )
)

就像我说的,我知道这可能是错误的方法,所以我很感谢您提供的任何见解!

解决方法:

用可用性而不是代码解决这个问题.让用户选择分隔符.

但是,由于他们可能不知道哪个制表符分隔,CSV等等,只是向他们展示预览.他们可以从选项中选择,直到输出看起来正确和表格.

然后根据选择的格式解析它.

标签:fgetcsv,php,csv,delimiter,parsing
来源: https://codeday.me/bug/20190825/1723656.html