带有不规则空格和制表符的文件按列分割/爆炸

时间:2011-12-01 22:59:35

标签: php string split

所以我有一个包含数千行的非常旧的文件(我猜是手工生成),我正在尝试将它们移动到rdb中,但这些行没有格式/模式转换为列。比如说文件中的行如下所示:

blah   blahsdfas    laslkdlasdj      aksdjla
sldks  slslsl      lsdlksldj           lsdjlfslk

我可以说当我看到它时它有四个字段,主要是尝试使用awk,但它没有按预期打印列,因为列之间的空格不是制表符或空格数相等。

你们认为有可能提取?如果是,有人可以帮助PHP片段吗?

2 个答案:

答案 0 :(得分:5)

使用preg_split(),您可以使用一个或多个空格字符作为分隔符来排除这一行:

$lines = file('filename', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach($lines as $line)
{
    $pieces = preg_split('/\s+/', $line);
    // do something with pieces
}

答案 1 :(得分:2)

看起来preg_split('/\s{2,}/', $line)会将此分开。那就是分成两个或更多的空白字符。

如果已经手动维护,您可能需要进行手动清理(例如,可能有人键入两个空格但不打算开始下一列)。幸运的是,只需数千行,手动清理是乏味的,并非不可能。