大概是这样的情况:我有很多txt文件和一个1行,有tags存储的,有的是单独的,有的是逗号分隔的。所以一个 txt 文件看起来像这样:
...
aaa,bbb,ccc // tag line; 3 tags
...
或者
...
aaa,ccc // tag line; 2 tags
...
或者
...
bbb // tag line;single tag
...
我想要实现的目标:读取每个 txt 文件中的所有标记行并将标记放入一个数组中。同名标签在数组中应该只出现一次 (array_unique)
到目前为止我所拥有的:
$files = glob("data/articles/*.txt");
$tag_lines = array();
$lines = file($file, FILE_IGNORE_NEW_LINES);
$tag_lines[] = $lines[7]; // 7th line is the tag line. Put all the tags in an array
foreach($tag_lines as $tag_line) {
echo $tag_line;
}
假设每行中只有 1 个标签,这工作正常。
假设我有 3 个 txt 文件。当某些行有多个标记时,逗号分隔,我的输出如下所示:
aaa,bbb,ccc
aaa,ccc
bbb
输出应该是这样的:
aaa
bbb
ccc
我试过这个:
foreach($files as $file) { // Loop the files in the directory
$lines = file($file, FILE_IGNORE_NEW_LINES);
$single_tag_line = explode(',' , $lines[7]);
$tag_lines[] = $lines[7];
$tag_lines = array_unique(array_merge($tag_lines , $single_tag_line));
}
foreach($tag_lines as $tag_line) {
echo $tag_line;
}
不幸的是,我仍然得到这样的输出:
aaa,bbb,ccc
aaa,ccc
bbb
繁华开满天机
海绵宝宝撒