2011-11-17 62 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

要匹配的东西开始#,只是