phpbar.de logo

Mailinglisten-Archive

[php] Daten aus einer Excel Tabelle

[php] Daten aus einer Excel Tabelle

Andreas Kempf andreas.kempf at amalesh.de
Mit Aug 10 10:44:09 CEST 2005


On Tue, 9 Aug 2005 14:46:59 +0200, Aron Schlesinger
<aron at viplocations.de> wrote:

>>> Allerdings macht es <http://de.php.net/fgetcsv> trivial.
>>
>> Gibt es einen eleganten (einfachen) Weg, das folgende zu loesen?
>>
>> Eine Zeile einer CSV-Datei sieht so aus:
>> 9686;"ABC\";"DEF;";;;;"sail1wqkccr0o";0;
>>
>> fgetcsv() macht das daraus:
>> $data[1] = ABC\";
>>
>> Tatsaechlich wird aber folgendes benoetigt:
>> $data[1] = ABC\
>
>Ich muss gestehen nicht den ganzen Thread gelesen zu haben,
>aber das hiesige sollte mit:
>
>preg_match_all("/(\"|'|)?(.*?)\\1;/", $string, $match);
>
>print_r($match['2']);
>
>zu lösen sein (Nicht getestet), wenn es um die einzelnen Zeilen geht.

Danke - nur liegt das Problem darin, dass bereits fgetcsv() das Array
falsch bildet.

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.

Man koennte natuerlich ein addslashes() auf die gesamte Datei
durchfuehren und sie erst dann per fgetcsv() lesen. Bei einer 10MB
grossen Quelldatei erscheint mir das allerdings nicht besonders
effektiv.

fgets() hingegen wird mit solchen Zeilen Schwierigkeiten bekommen:

9687;"AABM;";"AABM;";;;;"sail1wqkccr0o";0;

- Andreas

php::bar PHP Wiki   -   Listenarchive