2009-12-16 80 views
0
 
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和然後\噸,但它看起來像有文件中沒有標籤...幫我分析這個文件用PHP

回答

3

這會在所有空格分開收藏,不論大小。

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

它似乎是固定的列寬。你將需要:

  • 使用SUBSTR()和提取每列,然後修剪空白
  • 使用使preg_split(),並尋找在一排「/ \ s + /」兩個或兩個以上的空間
  • 其他

爆炸可能會返回一個空一堆元素,因爲它僅匹配單個字符/ 一個空間。

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

剩下的就是你

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而不必求助於修剪。

如果可以的話,是不是最好避開正則表達式?