PHP - 将凌乱的字符串转换为可用的字符串

时间:2013-06-13 10:29:19

标签: php regex string converter

我有一大堆来自足球队的数据需要整理。目前,它看起来像这样(出于演示目的,我只包括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

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

我试图用很少的运气做这件事。我想某些花哨的正则表达式可以做到这一点,但我不知道如何...希望有人可以提供帮助!

2 个答案:

答案 0 :(得分: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 

答案 1 :(得分:0)

<?php
    $resultstr = array();
        foreach($Teams as $items){
        $resultstr[] = $items['Team One'];
    }
    $items = implode(", ",$resultstr);
    echo $items;
?>
这样的事情。您可以使用自己的数据对其进行编辑,因为您在问题中没有提及。