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


File with irregular spaces and tabs split/explode columnwise

所以我有一个非常旧的文件,有数千行(我猜是手工生成的),我试图将它们移动到rdb中,但这些行没有格式/模式转换为列。例如,文件中的行看起来像:

blah   blahsdfas    laslkdlasdj      aksdjla
sldks  slslsl      lsdlksldj           lsdjlfslk

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

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

使用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
}

看起来preg_split('/'s{2,}/', $line)会把它分开。分隔符为两个或多个空白字符

如果这是手工维护的,您可能需要手动清理(例如,可能有人输入了两个空格,但不打算开始下一列)。只有几千行,幸亏手工清理很繁琐,但并非不可能。