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