我试图确定 CSV 文件字段是制表符分隔还是逗号分隔?我需要 PHP 验证。
我怎样才能确定这一点?
现在回答这个问题已经太晚了,但希望它能对某人有所帮助。
这是一个简单的函数,它将返回文件的分隔符。
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
P.S 我使用了 preg_split() 而不是explode(),因为explode('\t', $value) 不会给出正确的结果。
更新:感谢@RichardEB 指出代码中的错误。我现在已经更新了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)