2011-11-17 76 views
0

這裏評論陣列是一個可能的文本文件的模板,我可能需要導入到我的數據庫:解析CSV文件導入與頂部

#NAME:"Test" 
#REV:"rev1" 
#PRODUCT:"product1","description1","option1" 
#PRODUCT:"product2","description2","option1","option2" 
"A1","key1","DALI" 
"B1","key2","" 
"B2","key3","option2" 
"C1","key4","" 

第4行是一個新增加的這些格式文件。在頂部添加註釋行之前,我成功導入了逗號分隔數據本身。

我想知道是否有人可以提供給我最有效的方法,將註釋行中的所有值放入PHP中的變量中。

說到RegEx,我總是有點麻煩。我不確定如何最好地抓住以#開頭的行。 從本質上講,我想有提供以下資料給我:

$csv['name']: "Test"; 
$csv['rev']: "rev1"; 
$csv['products']: array(
    0 => array('name' => "product1", 'desc' => "description1", 'options' => "option1"), 
    1 => array('name' => "product2", 'desc' => "description2", 'options' => "option1,option2"), 
); 
$csv['data']: The rest of the data in text file 

有可能是定義了多個#PRODUCTS,所以這就是爲什麼它會是不錯的那些線製成的數組。

感謝您的幫助。

回答

2

你使用PHP 5.3使用^在正則表達式的開始(外組)?如果是這樣,那麼你可以簡單地使用fgets()讀取你的文件,並使用substr($ line,0,1)檢測註釋。如果你沒有檢測到#,這意味着它是一個數據行,然後將其傳遞給str_getcsv()...

Cheers

0

要匹配的東西開始#,只是