Php 读取制表符和换行符分隔(多维)平面文件数据库

Php 读取制表符和换行符分隔(多维)平面文件数据库,php,database,file,flat-file,Php,Database,File,Flat File,抱歉,如果这是一个简单的问题,我以前没有使用过平面文件数据库,发现这非常不直观 我有一个平面文件,tab\t和\n新行分隔数据库: Sebastian Ingrosso Kidsos (Wippenberg Mix) 2F32829628 Electro Avicii Silhouettes 2F47987574 House (两行仅用于示例)。我希望能够遍历每一行,将由\t制表符分隔的每个元素封装在span标记中,然后移动到下一行,最好将每一新行封装在元素中 我有一个开始,它没有添加跨

抱歉,如果这是一个简单的问题,我以前没有使用过平面文件数据库,发现这非常不直观

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

Sebastian Ingrosso  Kidsos (Wippenberg Mix) 2F32829628  Electro
Avicii  Silhouettes 2F47987574 House
(两行仅用于示例)。我希望能够遍历每一行,将由
\t
制表符分隔的每个元素封装在
span
标记中,然后移动到下一行,最好将每一新行封装在
  • 元素中

    我有一个开始,它没有添加跨度或李的:

    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);
    
    功能显示\u轨迹列表($max){
    $db=fopen('db/db.txt','r');
    $row=0;
    而($tracks=fgetcsv($db,“\n”)!==FALSE){
    如果($max>count($tracks)){
    $max=计数($tracks);
    }
    $row++;
    对于($index=0;$index<$max;$index++){
    回声“
  • ”$tracks[$index]。“
  • ”; } } fclose(分贝);
    }

    处理此任务的最佳方法是什么?通常情况下,我会使用SQL数据库来实现这一点,使事情更加直观,但这不是一个选项。我想到了嵌套的foreach循环,等等。到目前为止运气不好

    最终结果应该是: 塞巴斯蒂安·英格罗索·基德索斯(Wippenberg Mix)2F32829628
  • Avicii剪影2F32829628住宅

  • 等等。

    假设您的数据与我的
    $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";
    }
    
    $data=“Sebastian\tIngrosso\tKidsos(Wippenberg Mix)\t2F32829628\tElectro\nAvicii\tSilhouettes\t2F47987574\house”;
    foreach((数组)分解(“\n”,$data)为$line){
    打印“
  • ”; foreach((数组)分解(“\t”,$line)为$line){ 打印“{$line}”; } 打印“
  • \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>
    
  • 塞巴斯蒂安·格罗索基德索斯(维彭伯格混音)2F32829628
  • AviciisilHouettes2F47987574住宅

  • 对你不起作用吗?我想这与我使用expode做的事情类似,可以做另一个循环来处理第二维度。很好,比我最后得出的结论更简单