帮我用PHP解析这个文件

时间:2009-12-16 20:56:33

标签: php parsing

Fri Nov 27 10:00:01 EST 2009         974        12506
Fri Nov 27 11:00:01 EST 2009         988        12655
Fri Nov 27 12:00:01 EST 2009        1005        12886
Fri Nov 27 13:00:01 EST 2009        1026        13115
Fri Nov 27 14:00:01 EST 2009        1042        13429

我试图在\ n然后\ t上爆炸,但看起来文件中没有标签...

4 个答案:

答案 0 :(得分:3)

无论大小如何,这都将在所有空白集合中分开。

$lines = file($myfile);
foreach ($lines as $line) {
    $line = preg_split('/\s+/', $line);
    # do stuff with line
}

答案 1 :(得分:1)

$lines = explode( "\r\n", $str );

foreach( $lines as $line){

echo 'date = ' .  substr( $line, 0 , 28) . PHP_EOL;
echo 'var1 =  ' . substr( $line, 28 , 12) . PHP_EOL;
echo 'var2 =  ' . substr( $line, 40 , 12) . PHP_EOL;
echo '
' ; }

如果可能,PHP首先将所有传入的变量视为整数,所以如果文本文件具有可预测的长度(我可以看到24,12,12个字符),那么0000000974将被正确解析为整数974而不是不得不求助于修剪。

如果可以,最好不要使用正则表达式吗?

答案 2 :(得分:0)

似乎是固定的列宽。您将需要:

  • 使用substr()并提取每一列,然后修剪空格
  • 使用preg_split()并在一行中查找两个或多个空格'/ \ s + /'
  • 其他

爆炸可能会返回一堆空元素,因为它只匹配单个字符/ 一个空间。

答案 3 :(得分:0)

$line = "Fri Nov 27 10:00:01 EST 2009         974        12506";
preg_match_all('~\S+~', $line, $parts);
print_r($parts[0]);

其余由你决定