从文本文件中获取某些字符串并将其放入csv中

问题描述:

我有一个包含数百行数据的文本文件 - 每个数据行都用换行符分隔。从文本文件中获取某些字符串并将其放入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将不胜感激。

我选择与preg_match_all一起工作,因为它会在$line以内捕获更多的一次图案。其次我修改了正则表达式如下

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

什么[^\]]+说是匹配至少一个字符是不是]。如果您还想要捕获空的发生,您可以将修改器+更改为*[]