Помогите разобрать этот файл с помощью PHP

 Пятница 27 Ноябрь 10:00:01 EST 2009 974 12506
 Пятница 27 Ноябрь 11:00:01 EST 2009 988 12655
 Пятница 27 ноября 12:00:01 EST 2009 1005 12886
 Пятница 27 Ноябрь 13:00:01 EST 2009 1026 13115
 Пятница 27 ноября 14:00:01 EST 2009 1042 13429

Я попытался взорваться на \ n, а затем \ t, но похоже, что в файле нет вкладок …

Это будет разделено на любые коллекции пробелов, независимо от размера.

$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;
 эхо " 
'; }

Если возможно, PHP обрабатывает все входящие vars как целое в первую очередь, поэтому, если текстовые файлы имеют прогнозируемую длину (24, 12, 12 символов, которые я вижу), то 0000000974 будет правильно проанализирован как целое число 974, не прибегая к использованию Обрезать.

Разве это не всегда лучше для регулярных выражений aviod, если можно?

По-видимому, это фиксированная ширина столбца. Вам также понадобится:

  • Используйте substr () и извлеките каждый столбец, затем обрезайте пробелы
  • Используйте preg_split () и найдите два или более пробела в строке '/ \ s + /'
  • Другие

Explode, скорее всего, вернет кучу пустых элементов, поскольку он соответствует только одному символу / одному пробелу.

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

Остальное зависит от тебя