通过PHP比较两个文本文件,但找到差异

时间:2016-03-26 12:09:14

标签: php

我有2个文本文件

A.TXT

1111
2222
3333
4444
5555

b.txt

6666
1111
7777
8888
2222
9999

我正在运行此脚本

$lines1 = file("a.txt");
$data2 = file_get_contents("b.txt");

foreach($lines1 as $line1){
$line1 = trim($line1);

if(strpos($data2, $line1)){
echo $line1;
echo "<br />";
}
}

代码工作它列出了a.txt中b.txt

中可用的所有行

但是我需要反转这段代码。我希望它只显示b.tx上没有的

3 个答案:

答案 0 :(得分:0)

有很多existing components,它允许您计算文本文件之间的差异。

不要试图重新发明轮子,使用经过验证的成熟的现有代码来充满信心地加速您的开发。

答案 1 :(得分:0)

$lines1 = file("a.txt");
$data2 = file_get_contents("b.txt");

foreach($lines1 as $line1){
$line1 = trim($line1);

if(!strpos($data2, $line1)){
echo $line1;
echo "<br />";
}
}

////萨蒂我做到了......它的确有效(如果我想尝试另一个项目的话,Alex Babak我保存你的代码)

答案 2 :(得分:0)

您可以使用array_diff

$lines1 = file( 'a.txt', FILE_IGNORE_NEW_LINES );
$lines2 = file( 'b.txt', FILE_IGNORE_NEW_LINES );

$result = array_diff( $lines1, $lines2 );
print_r( $result );

输出:

Array
(
    [2] => 3333
    [3] => 4444
    [4] => 5555
)

使用标记FILE_IGNORE_NEW_LINESfile()会为您删除换行符,因此您无需修剪数组值。

array_diff$lines2中减去$lines1的元素。

如果要将结果保存(或打印)在换行符分隔的文本中,请使用

$text = implode( "\n", $result );