1
我有一個文本文件(類似於CSV概念)來解析並加載到不同的列中。使用正則表達式在PHP中解析CSV文件
我從我無法修改的外部應用程序接收它。 它使用「;」作爲字段分隔符,但不幸的是,我們可以在某些內容中使用相同的字符。
這裏一個小例子:
Code;Name;Address;E_mail;Contact name
000001;FUTURAMA SNC;VIA BARBAPAPA, 1;[email protected];matteo futuro;
000006;FERRANTIBUS SRL;VIA TOPOLINO, 1;[email protected];nicola ferri;
000008;MORMORO SPA;VIA CICCETTI, 30;"[email protected]; [email protected]";panebianco gianpietro;
我們使用此代碼來解析文件
$file = fopen("C:\\wamp\\www\\testcsv\\customers.csv","r");
$result ="";
$i=0;
while(! feof($file))
{
$result[$i++]= fgets($file);
}
for($j=1;$j<count($result);$j++){
$tempData = preg_split("/[;]/",$result[$j]);
print_r($tempData);
}
,你可以看到,在示例文件,我們的最後一行「;」字符內的電子郵件字段....所以它被讀爲另一列分隔符,並在第三個記錄電子郵件字段被分割爲2列,結果我有一個額外的列。
有什麼辦法,用正則表達式跳過;字符,如果它在「」字符?
在此先感謝幫助
爲什麼你想這樣做,當PHP已經fgetcsv和爆炸? – GordonM
'$ data = fgetcsv($ file,0,';',''','''');' –