$line = preg_replace('/([0-9]+)\s+([0-9]+)\s+(.+?)\s+([a-z0-9\-\*]+)\s+([0-9,]+)\s+([0-9,]+)\s+([0-9,]+)\s+([0-9,]+)\s+([a-z]+)/si','$1 $2;$3;$4;$5;$6;$7;$8;$9;',$line);
Kod
217 672 HAM.SZCZEKI OCTAVIA 1.6-1.9TDI 96- AH-1060 1 23 34,36 42,26 PLN
W powyższym przykładzie jest wszystko ok, ponieważ symbol towaru tj. AH-1060 nie zawiera spacji, więc separatory zostały odpowiednio przydzielone. Natomiast niżej jest odwrotna sytuacja.
Kod
220 374 HAM.SZCZEKI FIESTA 90- /180X32/ 220 374 1 23 25,12 30,9 PLN
W tym przypadku dzieli mi fakturę w ten sposób:
Kod
220 374;HAM.SZCZEKI FIESTA 90- /180X32/ 220;374;1;23;25,12;30,9;PLN;
Usunąłem zakres wyrażania i spróbowałem skorzystać z grupy wzorców, tak samo jak rozwiązane jest to w przypadku nazwy towaru (.+?), jednak pewnie o czymś zapominam, bo całość się sypie.
Nie wiem czy jasno opisuję problem, dlatego na koniec napiszę, że zależy mi na takich separatorach: symbol;nazwa;symbol;ilosc;vat;netto;brutto;pln;
Wyrażenie regularne dla 3 kolumny jest błędne.
Z góry dziękuję za pomoc.