phpbar.de logo

Mailinglisten-Archive

[php] regexp, csv (excel-format)

[php] regexp, csv (excel-format)

LB lsblsb at gmx.de
Fre Aug 26 21:19:55 CEST 2005


hallo,

ich stell die frage hier, auch wenn das problem sich nicht direkt auf 
php bezieht, aber immerhin auf ein regexp-problem ;). denn ich brauche 
diesen regexp eigentlich für eine javascript-funktion.
und zwar möchte ich einen string im csv-format, wie es excel 
bereitstellt mit javascript auslesen. habe dafür auch schon einen teil 
geschrieben.
nun bin an folgendem punkt:

alle datensätze (hier beispiele) sind stehen folgendermaßen in einem Array:

array[
'a;b;c',
'a;"bb;b";c',
'a;"bb""";c',
'a;"b\nb";c',
'a;b;";"""',
'"a;;"";a";";b;b";c'
]

wie man sieht habe ich versucht möglichst viele variationen 
reinzubringen. der knackpunkt sind die mit einem " maskierten bereiche. 
in diesen bereichen können ja " durch ein zweites " maskiert vorkommen 
und ausserdem das trennzeichen ; . (\n ist übrigens trenner der datensätze).

nun muss dieses array in ein 2-dim. array rein, dass dann so aussehen 
muss (dir erste zeine sind immer die bezeichner für die spalten):

array[0]['a'] = 'a';
array[0]['b'] = 'bb;b';
array[0]['a'] = 'c';
array[1]['a'] = 'a';
array[1]['b'] = 'bb"';
array[1]['c'] = 'c';
array[2]['a'] = 'a';
array[2]['b'] = 'b\nb';
array[2]['c'] = 'c';
array[3]['a'] = 'a';
array[3]['b'] = 'b';
array[3]['c'] = ';"';
array[4]['a'] = 'a;;";a';
array[4]['b'] = ';b;b';
array[4]['c'] = 'c';

hat jemand ne idee, wie ich das ganze mit einem regexp lösen kann - wenn 
das überhaupt geht, der nicht auf den quantifier ? angewiesen ist. komm 
einfach auf keine lösung.
sonst komm ich um ein durchparsen über schleifen nich rum - und das 
kostet zeit.
das ganze wird im endeffekt wiegesagt für javascript benötigt.

danke euch im voraus,
gruß lars




php::bar PHP Wiki   -   Listenarchive