Semikolons einer Zeile zählen

  • Themenstarter Themenstarter D@nger
  • Beginndatum Beginndatum
D

D@nger

Hallo, ich lese eine csv-Datei des folgenden Formates aus:
"a1";"b1";"c1";"d1"
"a2";"b2";"c2";"d2"
"a3";"b3";"c3";"d3"
"a4";"b4";"c4";"d4"

So, das klappt auch alles ganz toll mit folgendem Code:
PHP:
<?php

  $ausgeben = $_GET['ausgeben']; //Inhalt der Checkboxen
     


      $file = "csv.txt"; 

	if($handle = fopen ($file , "r"))
	{
		$wert = substr(fread ($handle, (filesize ($file)-1)),1);//eins weniegr auslesen, damit " weg ist
		fclose ($handle);
	
   $wert=str_replace("\"","",$wert);

   $wert=str_replace("
",";",$wert);

   $wert=explode(";",$wert);//splitten
   
   $i=0;
	$anzahl=9;
	echo "<table>";
   		while(isset($ausgeben[$i])) 
		{
		$ausgeben[$i]-=1;
			echo "<tr>
						<td>".$wert[$anzahl*$ausgeben[$i]]."</td>
						<td>".$wert[$anzahl*$ausgeben[$i]+2]."</td>
						<td>".$wert[$anzahl*$ausgeben[$i]+3]."</td>
						<td>".$wert[$anzahl*$ausgeben[$i]+7]."</td>
					</tr>";	

		$i+=1;
		}
		echo "</table>";
	}
	

?>

Nun gebe ich ja der Variablen $anzahl die Anzahl der Spalten. Kann das auch irgendwie automatisiert werden?

Zum 2. Problem:
Wenn in einer "Zelle" das Trennzeichen ; (Semikolon) steht wird die Ausgabe verschoben. Kann ich das irgendwie verhindern?

Vielen Dank schon mal.
 
Zuletzt bearbeitet von einem Moderator:
Hallo, meintest du das so?

PHP:
<?php

  $ausgeben = $_GET['ausgeben']; //Inhalt der Checkboxen
     

  $row = 1;                                      
  $handle = fopen ("CL_Artikelstamm.txt","r");       
       
       $i=0;   
       
while(isset($ausgeben[$i]))
  {       
  $ausgeben[$i]-=1;
       
    
  while ( ($data = fgetcsv ($handle, 1000, ";")) !== FALSE ) 
    {                                       
    $num = count ($data);                                                             
    
    $row++;                                       
    
    echo "<table><tr>";  
                                               
    
      
      print $row-1 . "  " . $data[2] . "<br>\n";            // des Arrays auszugeben
      $i=$i+1;
      

    echo "</table></tr>";
    $i+=1;
   
    }
  }
  fclose ($handle);  
    

?>

Denn dabei werden leider alle Datensätze ausgegeben.
 
Zurück