ich habe ein problem beim einlesen einer csv-datei. das zeilenweise einlesen klappt soweit ganz gut, jedoch: wenn der inhalt einer Spalte mit Anführungsstrichen geschachtelt ist, bekomme ich schwierigkeiten beim "exploden" der einzelnen Spalten. hier nun der relevante Auszug aus dem Skript:
Wer kann mir da weiterhelfen?
PHP-Code:
$AA = explode("\r\n", $page);
$zeilen_anzahl=count($AA);
echo $zeilen_anzahl.'Zeilen<br>';
#echo "<textarea name=\"textarea\" rows=30 cols=30>".$page."</textarea><br>";
#preg_replace("/\\\"(.*)\\\"/", "$1", $csv);
#preg_replace('/\\"([^(\")\r\n]*)\\"/','$1',$csv);
#echo "<textarea name=\"textarea\" rows=30 cols=30>$page</textarea>";
$erste_zeile_spalten= $AA[0];
$spalten_namen=explode(";",$erste_zeile_spalten);
$spalten_in_datei=count($spalten_namen);
?><table border="1" bordercolor="#EFEFEF" cellpadding="1" cellspacing="1" width="1000">
<?php
function changetext($txt) {
$txt = str_replace(";\"", "ßßßßß", $txt);
$txt = str_replace("\";", "ßßßßß", $txt);
$txt = str_replace(";", ", ", $txt);
$txt = str_replace("\"", ".", $txt);
$txt = str_replace("ßßßßß", ";", $txt);
#$txt = htmlentities($txt);
return $txt;
}
#for($i=0;$i<$zeilen_anzahl;$i++)
for($i=0;$i<40;$i++)
{
#if(preg_match('[;]',$AA[$i]){?>
<tr><td colspan=7> <?php echo htmlentities(str_replace("#",'',$AA[$i]));?></td></tr>
<?php
#} ?>
<tr valign="top"><td><?php echo $i?></td>
<?php
for($j=0;$j<$spalten_in_datei;$j++)
{
#^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$
#$AA[$i] = preg_replace('!;(.*?);!',"§§§$1§§§",$AA[$i]);
#$AA[$i] = preg_replace("^(\";)(.*?)(;\")$","§§§$1§§§",$AA[$i]);
#$AA[$i] = preg_replace("(\";)(.*?)(;\")","§§§$1§§§",$AA[$i]);
/*
$text = preg_replace("/(\[change])(.*)(\[\/change\])/eisU", "changetext('$2')", $text);
*/
#$AA[$i] = preg_replace("(/^a/i)(.*?)(/^a/i)","§§§$1§§§",$AA[$i]);
#$AA[$i] = preg_replace("/(;\")(.*)(\";)/eisU", "changetext('$2')", $AA[$i]);
$AA[$i] = preg_replace("/(;\")(.*)(\";)/eiU", "changetext('$2')", $AA[$i]);
$spalte_inhalt=explode(";",$AA[$i]);
?>
<td><?php $inhaltsausgabe= str_replace("#",'',$spalte_inhalt[$j]);
if($inhaltsausgabe!=""){echo $inhaltsausgabe;}else{echo"-";}
?></td>
<?php
}
?>
</tr>
<?php
}
Kommentar