1

我有一堆来自需要整理的足球队的数据。目前,它看起来像这样(出于演示目的,我只包括了 3 个):

1   
Team One
9   7   1   1   31  13  18  22
2   
Team Two
9   6   2   1   25  21  4   19
3   
Team Three
9   4   3   2   26  18  8   14

为清楚起见,我将解构前 3 行:

1\t\n
Team One\n
9\t7\t1\t1\t31\t13\t18\t22

请注意在每个团队的位置之后如何有一个制表符和一个换行符。然后,下一行的团队名称,只有一个换行符。最后,关于该团队的所有详细信息。然后下一支球队的统计数据开始。

我需要将其转换为:

1,Team One,9,7,1,1,31,13,18,22
2,Team Two,9,6,2,1,25,21,4,19
3,Team Three,9,4,3,2,26,18,8,14

每一行都以球队的位置开始,然后是球队名称,然后是每个数据——都用逗号分隔。

我尝试过这样做,但运气不佳。我想某种花哨的正则表达式可以解决问题,但我不知道如何......希望有人能提供帮助!

4

2 回答 2

1

您可以使用

$in = file("log.txt");
$out = fopen("php://output", "w");

foreach(array_chunk($in, 3) as $group) {
    $group = array_map("trim", $group);
    $group[2] = implode(",", str_getcsv($group[2], "\t"));
    fputcsv($out, $group);
}

输出

1,"Team One","9,7,1,1,31,13,18,22"
2,"Team Two","9,6,2,1,25,21,4,19"
3,"Team Three","9,4,3,2,26,18,8,14"

如果您想要空外壳,请使用

fputcsv($out, $group, ",", " ");

输出

1, Team  One , 9,7,1,1,31,13,18,22 
2, Team  Two , 9,6,2,1,25,21,4,19 
3, Team  Three , 9,4,3,2,26,18,8,14 
于 2013-06-13T10:40:18.677 回答
0
<?php
    $resultstr = array();
        foreach($Teams as $items){
        $resultstr[] = $items['Team One'];
    }
    $items = implode(", ",$resultstr);
    echo $items;
?>

类似的东西。您可以使用自己的数据对其进行编辑,因为您没有在问题中提及这一点。

于 2013-06-13T10:35:31.850 回答