所以我有一个包含数千行的非常旧的文件(我猜是手工生成),我正在尝试将它们移动到rdb中,但这些行没有格式/模式转换为列。比如说文件中的行如下所示:
blah blahsdfas laslkdlasdj aksdjla
sldks slslsl lsdlksldj lsdjlfslk
我可以说当我看到它时它有四个字段,主要是尝试使用awk,但它没有按预期打印列,因为列之间的空格不是制表符或空格数相等。
你们认为有可能提取?如果是,有人可以帮助PHP片段吗?
答案 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)
会将此分开。那就是分成两个或更多的空白字符。
如果已经手动维护,您可能需要进行手动清理(例如,可能有人键入两个空格但不打算开始下一列)。幸运的是,只需数千行,手动清理是乏味的,并非不可能。