SplFileObject :: SKIP_EMPTY不起作用

时间:2016-03-23 19:14:51

标签: spl

我现在面临巨大的困难。我没有成功找到解决方法。 我试图显示没有空行的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;
&#13;
&#13;

我的旗帜什么都不做,我也不知道我做错了什么...... 谢谢。

2 个答案:

答案 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;