CSV auslesen - Problem mit Zeilenumbruch

mayooo

Grünschnabel
Hallo zusammen,

viele User haben bereits ihre Probleme mit CSV, XLS und PHP bzgl. der Zeilenumbrüche geschildert, leider ergab sich da bei meinem Problem keine Lsg., sodass ich nun doch mal ein neues Thema eröffnen muss.

Ich öffne die csv mittels file und werte sie dann zeilenweise aus. Leider krieg ich den Zeilenumbruch in einigen Feldern nicht weg, sodass mitten im Datensatz die Zeile zu Ende ist und die foreach-Schleife von neuem anfängt und im nächsten Datensatz mit dem Rest des vorhergehenden Datensatz fortfährt.

PHP:
<?php

	$lines = file ('adressen.csv');

	foreach ($lines as $line_num => $line) {
		if($line_num == 0)
		{
			$drop = "DROP TABLE IF EXISTS `adressen`";
			mysql_query($drop,$ltaek);
			
			$new_tab = "CREATE TABLE `adressen` (
						`ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
						`IDNr` INT NOT NULL ,
						`Name` VARCHAR( 80 ) NOT NULL ,
						`Vorname` VARCHAR( 80 ) NOT NULL ,
						`akaGrad` VARCHAR( 20 ) NOT NULL ,
						`Praxis` TEXT NOT NULL ,
						`PStrasse` VARCHAR( 150 ) NOT NULL ,
						`PPLZ` VARCHAR( 5 ) NOT NULL ,
						`POrt` VARCHAR( 100 ) NOT NULL ,
						`PKreis` INT( 5 ) NOT NULL ,
						`PTelNr` VARCHAR( 100 ) NOT NULL ,
						`PFax` VARCHAR( 100 ) NOT NULL ,
						`GZ` TEXT NOT NULL) ";
			echo '<pre>'.$new_tab.'</pre>';
			
			//mysql_query($new_tab);
		
		}else
		{
			$insert = "INSERT INTO `adressen` ( `ID` , `IDNr` , `Name` , `Vorname` , `akaGrad` , `Praxis` , `PStrasse` , `PPLZ` , `POrt` , `PKreis` , `PTelNr` , `PFax` , `GZ`) 
						VALUES (''";
		
			$line = preg_replace('#\r\n|\r(?!\n)|\n(?<!\r)#', ' ', $line);
			$line = preg_replace('#"#', '', $line);
			$eintrag = explode(";",$line);
			$i=0;
			foreach($eintrag as $inhalt)	// Spaltenweise auslesen
			{
				$i++;
                                // ich möchte nicht alle spalten auslesen, sondern nur die 1., 2., 3., 8. usw. deshalb die folgende switch
				switch($i)
				{
					case 1:		// IDNr
					case 2:		// Name
					case 3:		// Vorname
					case 8:		// akaGrad
					case 13:	// Praxis
					case 14:	// PStraße
					case 15:	// PPLZ
					case 16:	// POrt
					case 30:	// PKreis
					case 31:	// PTelNr
					case 32:	// PFax
				
					$insert .= ", '".nl2br(htmlentities(stripslashes($inhalt)))."'";
				}
			}
			$insert .=")";
			//mysql_query($insert) or die(mysql_error());
			echo '<pre>'.$insert.'</pre>';
		}
   	}
?>

Zur Veranschaulichung noch ein Screen. Für schnelle Hilfe bin ich sehr dankbar.
 

Anhänge

  • umbruch.jpg
    umbruch.jpg
    25,5 KB · Aufrufe: 61
Zuletzt bearbeitet:
Ich verstehe nicht genau was du meinst. Befinden sich die Zeilenumbrüche bereits in den Quelldaten?
 
Ja, sie befinden sich bereits in der XLS, welche in CVS konvertiert und dann mit PHP eingelesen wird.
 
:google:tehe. danke ;)

komm ich gleich nur nächsten, recht simplen frage: ich hab in einem adressfeld bei der straße ein apostroph. sql jammert da rum. kann ich das mit einer bestimmten funktion umgehen?
PHP:
preg_replace("#'#", "\'", $string);
oder
PHP:
strip_tags($string);
oder sonst irgendwas? :-\
 
Zurück