我遇到了一个问题,需要将CSV字符串转换为数组。
INV;165;1;0;1 Username;0;10000;"Here is multiline-text.
with line-breaks:
";20 Offen;0,00
INV;166;1;0;1 Username2;0;10000;"Here is another multiline-text.
with line-breaks:
";20 Offen;0,00
我尝试使用str_getcsv将字段分割,但问题是,分隔符仅出现在一个字段中,而函数也在拆分多行字段。
我的解决方案是首先通过preg_replace转换换行符,但我不是很了解它。这是仅替换由; "和"; 包围的换行符的正则表达式:
/(;")(.*)(\n)(.*)(";)/
这个模式实际上只匹配第一个换行符。
有人能给我提示如何完成这个任务吗?
提前感谢你。
这是原始的CSV文件:
CMXINV;165;1;0;1 Felix Hirschberg;0;10000;Herr;;Max;Muster;Company;;Street;123;City;DE;(0 40) 6 25 6;;(0 40) 6 25 6;mail@muster.de;;;;;;;;0;20121217;20121217;1 Sofort ohne Abzug;EUR;1 Agentur;0 ;0,00;;"Vielen Dank für Ihren Auftrag.
Vereinbarungsgemäß berechnen wir Ihnen:
";"Mit besten Grüßen
Invoice Man";;0;0;0;0;;20 Offen;0,00;;0 ;0,00;0,00;;EXW;;;;;;;;;;;;;;;;2;;Project: Test-Project;;0,000;0,00;1,000;0,00;0,00;0;0;0;0;0
CMXINV;165;2;0;1 Felix Hirschberg;0;10000;Herr;;Max;Muster;Company;;Street;123;City;DE;(0 40) 6 25 6;;(0 40) 6 25 6;mail@muster.de;;;;;;;;0;20121217;20121217;1 Sofort ohne Abzug;EUR;1 Agentur;0 ;0,00;;"Vielen Dank für Ihren Auftrag.
Vereinbarungsgemäß berechnen wir Ihnen:
";"Mit besten Grüßen
Invoice Man";;0;0;0;0;;20 Offen;0,00;;0 ;0,00;0,00;;EXW;;;;;;;;;;;;;;;;0;1;"- job1 (1h)
- job2 (1h)
- job3 (0,75h)
- job4 (1h)
- job5 (0,5h)";HR;3,25;100,00;1,00;0,00;325,00;1;0;0;0;0
MESSAGE;S;210053;INVOICE_GET hat 1 Datensätze zurückgegeben
MESSAGE;S;204020;Datenübertragung erfolgreich. Es wurden 1 Datensätze verarbeitet.