删除在其他文件中找到的行


Delete lines that found in another file

我有 2 个文件: text1.txttext2.txt

我该怎么做:如果在text1.txt中找到与text2.txt中的行匹配的行,请删除它(或显示唯一)?

这是我到目前为止所拥有的:

$a = file('text1.txt');
$b = file('text2.txt');
$contents = '';
foreach($b as $line2) {
    foreach($a as $line1) {
        if(!strstr($line1, $line2)) {
            $contents .= $line1; 
        }  
    }
}
file_put_contents('unique.txt', $contents);

这将是:

file_put_contents('unique.txt', array_diff(file('text1.txt'), file('text2.txt')));

- 由于您将文件完全加载到 RAM 中,我想这是可以接受的解决方案。

此外,您可能希望定义自己的函数来确定字符串是否相等。然后逻辑将是相同的,但应该使用 array_udiff()