2011-12-13 116 views
0

我有一個包含數百行數據的文本文件 - 每個數據行都用換行符分隔。從文本文件中獲取某些字符串並將其放入csv中

的data.txt:

......Tue Dec 13 [alphanumeric1.alphanumeric1] : blah [alphanumeric1] ? blahblah [alphanumeric1] : blah 
..Tue Dec 13 [alphanumeric2.alphanumeric2] : blah [alphanumeric2] ? blahblah [alphanumeric2] : blah 
..................Tue Dec 13 [alphanumeric3.alphanumeric3] : blah [alphanumeric3] ? blahblah [alphanumeric3] : blah 

每條線的長度各不相同,都是獨一無二的,但每個都有三套[]的和裏面的數據是我想要的。

目標是逐行讀取data.txt,將[]中的數據抽出到csv的自己的列中。

result.csv:

col1       col2   col3 

    alphanumeric1.alphanumeric1 alphanumeric1 alphanumeric1 
    alphanumeric1.alphanumeric2 alphanumeric2 alphanumeric2 
    alphanumeric1.alphanumeric3 alphanumeric3 alphanumeric3 

So thats: 
alphanumeric1.alphanumeric1,alphanumeric1,alphanumeric1 
alphanumeric1.alphanumeric2,alphanumeric2,alphanumeric2 
alphanumeric1.alphanumeric3,alphanumeric3,alphanumeric3 

我已經得到了文本文件打開罰款:

用的preg_match
$fh = fopen('data.txt','r'); 
while ($line = fgets($fh)) { 
    echo $line; 
} 

,但我有問題和獲得的[]到數據一個csv。

preg_match('/\[(.+)\]/', $line, $matches); 

任何與preg_match的幫助和推送數據到.csv將不勝感激。

回答

0

我選擇與preg_match_all一起工作,因爲它會在$line以內捕獲更多的一次圖案。其次我修改了正則表達式如下

preg_match_all('/\[([^\]]+)\]/', $line, $matches); 

什麼[^\]]+說是匹配至少一個字符是不是]。如果您還想要捕獲空的發生,您可以將修改器+更改爲*[]

相關問題