如何确定csv文件字段是制表符分隔还是逗号分隔 [英] how to find out if csv file fields are tab delimited or comma delimited
本文介绍了如何确定csv文件字段是制表符分隔还是逗号分隔的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何确定csv文件字段是用制表符分隔还是用逗号分隔.我需要为此进行php验证.任何人都可以帮忙.预先感谢.
how to find out if csv file fields are tab delimited or comma delimited. I need php validation for this. Can anyone plz help. Thanks in advance.
推荐答案
回答这个问题为时已晚,但希望对您有所帮助.
It's too late to answer this question but hope it will help someone.
这是一个简单的函数,它将返回文件的定界符.
Here's a simple function that will return a delimiter of a file.
function getFileDelimiter($file, $checkLines = 2){
$file = new SplFileObject($file);
$delimiters = array(
',',
'\t',
';',
'|',
':'
);
$results = array();
$i = 0;
while($file->valid() && $i <= $checkLines){
$line = $file->fgets();
foreach ($delimiters as $delimiter){
$regExp = '/['.$delimiter.']/';
$fields = preg_split($regExp, $line);
if(count($fields) > 1){
if(!empty($results[$delimiter])){
$results[$delimiter]++;
} else {
$results[$delimiter] = 1;
}
}
}
$i++;
}
$results = array_keys($results, max($results));
return $results[0];
}
如下所示使用此功能:
$delimiter = getFileDelimiter('abc.csv'); //Check 2 lines to determine the delimiter
$delimiter = getFileDelimiter('abc.csv', 5); //Check 5 lines to determine the delimiter
PS我使用了preg_split()而不是explode(),因为explode('\ t',$ value)不会给出正确的结果.
更新:感谢@RichardEB指出代码中的错误.我已经更新了.
UPDATE: Thanks for @RichardEB pointing out a bug in the code. I have updated this now.
这篇关于如何确定csv文件字段是制表符分隔还是逗号分隔的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文