phpbar.de logo

Mailinglisten-Archive

[php] Daten aus einer Excel Tabelle

[php] Daten aus einer Excel Tabelle

Aron Schlesinger aron at viplocations.de
Mit Aug 10 13:11:09 CEST 2005


Am 10.08.2005 um 10:44 schrieb Andreas Kempf:
> Danke - nur liegt das Problem darin, dass bereits fgetcsv() das Array
> falsch bildet.

Mein Vorschlag ging genau dahin, das Du ein Ersatz für fgetcsv()
mit Hilfe von fegts() und preg_match_all() schreibst.
Vielleicht hilft mein Beispiel hier weiter, oder ich verstehe Dich
einfach falsch?

function my_fgetcsv($handle, $length, $delimiter = ',') {
     if(feof($handle))
         return FALSE;
     $buffer = fgets($handle, $length);
     return preg_match_all('/("|\'|)(.*?)\1' . $delimiter . '/',  
$buffer, $match)
         ? $match['2']
         : array();
}

$handle = fopen('test.csv','r');
while(($data = my_fgetcsv($handle, 500, ';')) !== FALSE ) {
     print_r($data);
}
fclose($handle);

Da fehlen noch ein par Fehlerbehandlungszeilen drinnen, aber so vom
Prinzip sollte das doch genau das machen was Du haben willst?!


> Etwas vollstaendiger:
>
> 9685;"AABM";"AABM";;;;"sas0jdpr8v9gk";0;
> 9686;"AABM\";"AABM\";;;;"sail1wqkccr0o";0;
>
> Daraus macht fgetcsv():
>
> Array
> (
>     [0] => 9685
>     [1] => AABM
>     [2] => AABM
>     [3] =>
>     [4] =>
>     [5] =>
>     [6] => sas0jdpr8v9gk
>     [7] =>
> )
>
> Array
> (
>     [0] => 9686
>     [1] => AABM\";
>     [2] =>
>     [3] =>
>     [4] =>
>     [5] => sail1wqkccr0o
>     [6] =>
> )
>
> Das erste Array ist korrekt, das zweite nicht.
>
> [...]
>
> fgets() hingegen wird mit solchen Zeilen Schwierigkeiten bekommen:
>
> 9687;"AABM;";"AABM;";;;;"sail1wqkccr0o";0;

Warum soll fgets() hier Schwierigkeiten bekommen, der liest doch nur
eine Zeile von der Position des Zeigers?!


php::bar PHP Wiki   -   Listenarchive