读取选项卡和换行符分隔(多维)平面文件数据库

时间:2013-02-15 21:56:07

标签: php database file flat-file

道歉,如果这可能是一个简单的问题,我之前没有使用过平面文件数据库,并且发现这非常不直观。

我有一个平面文件,标签\t\n新行分隔数据库:

Sebastian Ingrosso  Kidsos (Wippenberg Mix) 2F32829628  Electro
Avicii  Silhouettes 2F47987574 House

(两行仅用于样本)。我希望能够遍历每一行,将\t标签字符分隔的每个元素封装在span标记内,然后转到下一行,最好将每个新行封装在{{{ 1}}元素。

我首先要做的是,不添加跨度或li:

<li>

}

处理此任务的最佳方法是什么?通常情况下,我会使用SQL数据库完成此操作,使事情更加直观,但这不是一个选项。我已经想到嵌套的foreach循环,等等到目前为止没有运气。

最终结果应该是:     function display_tracklist($max) { $db = fopen('db/db.txt', 'r'); $row = 0; while (($tracks = fgetcsv($db, "\n")) !== FALSE) { if ($max > count($tracks)) { $max = count($tracks); } $row++; for ($index=0; $index < $max; $index++) { echo "<li>" . $tracks[$index] . "</li>"; } } fclose($db);

1 个答案:

答案 0 :(得分:1)

假设您的数据与我的$data相似,看起来就像给出了您想要的内容;

$data = "Sebastian\tIngrosso\tKidsos (Wippenberg Mix)\t2F32829628\tElectro\nAvicii\tSilhouettes\t2F47987574\tHouse";
foreach ((array) explode("\n", $data) as $lines) {
    print "<li>";
    foreach ((array) explode("\t", $lines) as $line) {
        print "<span>{$line}</span>";
    }
    print "</li>\n";
}

输出;

<li><span>Sebastian</span><span>Ingrosso</span><span>Kidsos (Wippenberg Mix)</span><span>2F32829628</span><span>Electro</span></li>
<li><span>Avicii</span><span>Silhouettes</span><span>2F47987574</span><span>House</span></li>