【问题标题】:Parsing CSV file into array with comments at top将 CSV 文件解析为顶部带有注释的数组
【发布时间】:2011-11-17 16:35:34
【问题描述】:

这是我可能需要导入数据库的可能文本文件的模板:

#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,这就是为什么最好有一个由这些行组成的数组。

感谢您的帮助。

【问题讨论】:

    标签: php parsing csv hash extract


    【解决方案1】:

    您使用的是 php 5.3 吗?如果是这样,那么您可以简单地使用 fgets() 读取文件并使用 substr($line, 0, 1) 检测 cmets。如果没有检测到#,则表示它是数据线,然后将其传递给str_getcsv()...

    干杯

    【讨论】:

      【解决方案2】:

      要匹配以 # 开头的内容,只需在正则表达式的开头使用 ^(组外)

      【讨论】:

        猜你喜欢
        • 2016-01-12
        • 1970-01-01
        • 2014-10-19
        • 1970-01-01
        • 2012-12-16
        • 1970-01-01
        • 1970-01-01
        • 2020-04-19
        • 2016-05-08
        相关资源
        最近更新 更多