我现在面临巨大的困难。我没有成功找到解决方法。 我试图显示没有空行的csv数据。我以为SPL库可以允许它。但无论我做什么,我都无法找到它无法正常工作的原因。 您可以...吗? 这是我的代码(非常简单):
<?php
// Lecture du fichier csv
$csv = new SplFileObject('fichiers/tempo/test.csv', 'r');
// Flags pour ignorer les lignes vides
$csv->setFlags(SplFileObject::READ_CSV | SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);
$csv->setCsvControl(';');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" />
<link rel="icon" type="image/png" href="images/favicon.png" />
<title>Nas - Insertion de données</title>
</head>
<body>
<table>
<?php
$tableau = array();
// On parcours les lignes du fichier csv en lecture ==> $csv
foreach($csv as $line){
echo '<tr>';
foreach($line as $var){
echo '<td>-'.$var.'</td>';
}
echo '</tr>';
}
?>
</table>
</body>
</html>
&#13;
我的旗帜什么都不做,我也不知道我做错了什么...... 谢谢。
答案 0 :(得分:1)
您应该使用这些标志忽略空行:
$file->setFlags(
SplFileObject::READ_CSV |
SplFileObject::SKIP_EMPTY |
SplFileObject::READ_AHEAD |
SplFileObject::DROP_NEW_LINE
);
答案 1 :(得分:0)
感谢您的时间。我尝试使用php 5.4,5.5,5.6和7.0,但它没有做任何事情。然后我选择将以下测试放到每个循环中:
foreach($csv as $line){
// Ignoring empty lines
if(implode($line) == null)continue;
...
至少它有效!
我的Csv是这样的: 酒单;;;;;;;;;; ;;;;;;;;;; ;这种葡萄酒储存在chƒteau或供应商的仓库中,稍后可供收集。;;;;;;;;; ;;;;;;;;;; 产品类型;年份;葡萄酒;称谓; Classement;数量;尺寸;价格; W-A; W-S;评论 红葡萄酒; 2013; Aiguilhe(d'); Castillon - c“tes de bordeaux ;; 216; 750 mL; 11,80 ?; 87-89s; 86-89; 红葡萄酒; 2012; Aiguilhe(d'); Castillon - c“tes de bordeaux ;; 168; 750 mL; 12,50 ?; 89-91; 89; 红葡萄酒; 2011; Aiguilhe(d'); Castillon - c“tes de bordeaux ;; 395; 750 mL; 12,60?; 88; 89;