以下是我可能需要导入数据库的可能文本文件的模板:
#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,这就是为什么从这些行创建一个数组会很好。
感谢您的帮助。
答案 0 :(得分:2)
你使用的是php 5.3吗?如果是这样,那么您可以使用fgets()读取文件,并使用substr($ line,0,1)检测注释。如果您没有检测到#,则表示它是数据行,然后将其传递给str_getcsv()......
干杯
答案 1 :(得分:0)
要匹配以#开头的内容,只需在regexp开头使用^(在组外)