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 1
This'll split at all whitespace collections, regardless of size.
$lines = file($myfile);
foreach ($lines as $line) {
$line = preg_split('/\s+/', $line);
# do stuff with line
}
$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 '
' ; }
If possible PHP treats all incoming vars as an integer first of all, so if the text files are of predictable length ( 24, 12, 12 Chars that I can see) then 0000000974 will be correctly parsed as being the integer 974 without having to resort to trim.
Isn't it alway best to aviod regexes if you can?
It appears to be fixed column width. You're going to need to either:
Explode will likely return a bunch of empty elements, since it only matches a single character / one space.
$line = "Fri Nov 27 10:00:01 EST 2009 974 12506";
preg_match_all('~\S+~', $line, $parts);
print_r($parts[0]);
the rest is up to you