0

我有两个文本文件:localhost.txthost.txt

localhost.txt包含:

127.0.0.1:100
127.0.0.1:200
127.0.0.1:300
127.0.0.1:400
127.0.0.1:500
127.0.0.1:600
127.0.0.1:700
127.0.0.1:800
127.0.0.1:(...)

host.txt包含:

172.39.32.1:100
172.39.32.1:200
172.39.32.1:300
172.39.32.1:400
172.39.32.1:500
172.39.32.1:600
172.39.32.1:700
172.39.32.1:800
127.0.0.1:1300
127.0.0.1:1800
172.39.32.1:(...)

(...) 我正在使用这个脚本

$data = file("localhost.txt");
file_put_contents('host.txt', implode(array_unique($data))); 
$fisier = file_get_contents('host.txt'); 

删除重复项。

我需要一个脚本,它也会删除类似的行,例如,如果 localhost.txt 中的 127.0.0.1:200 已经存在于 host.txt 中,那么脚本将从 host.txt 中删除所有带有 127.0.0.1 的行。

有任何想法吗?:) 谢谢

4

1 回答 1

1
$hosts_lines = file("hosts.txt");

foreach($hosts_lines as $line) {
    $temp = explode(":", $line);
    $hosts[$temp[0]][] = $temp[1];
}


$localhost = file("localhost.txt");

foreach ($localhost as $line) {
    $temp = explode(":", $line);
    unset($hosts[$temp[0]]);
}


foreach($hosts as $ip => $ports) {
    foreach ($ports as $port) {
        printf("%s:%s", $ip, $port);
    }
}
于 2013-08-06T15:28:32.617 回答