Mailinglisten-Archive |
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