violar
Допустим, имеются 2 текстовых файла, каждый из которых является списком доменов (по одному домену в строке). При этом во втором файле доменов в списке больше, но некоторое их количество дублирует уже имеющиеся в первом файле.
Нужно, чтобы скрипт "сравнил" списки доменов в обоих файлах, после чего из второго файла удалил из списка все домены, которые уже имеются в первом.
Например, список доменов в первом файле (spisok1.txt) будет таким:
domen-1.ru
domen-2.ru
domen-3.ru
domen-4.ru
domen-5.ru
domen-6.ru
domen-7.ru
domen-8.ru
domen-9.ru
А список доменов во втором файле (spisok2.txt) будет таким:
domen-1.ru
domen-15.ru
domen-2.ru
domen-3.ru
domen-4.ru
domen-11.ru
domen-5.ru
domen-6.ru
domen-7.ru
domen-12.ru
domen-8.ru
domen-13.ru
domen-9.ru
domen-14.ru
domen-10.ru
Нужно, чтобы в результате обработки скриптом из файла spisok2.txt были удалены урлы, имеющиеся в файле spisok1.txt, после чего он стал бы таким:
domen-15.ru
domen-11.ru
domen-12.ru
domen-13.ru
domen-14.ru
domen-10.ru
-=Faraon=-
Код:
<?
$f=fopen("output.txt","w");fwrite($f,implode("",array_diff(file("spisok2.txt"),file("spisok1.txt"))));fclose($f);
?>
Sterx
както так:
Код:
<?php
$array1=file("spisok1.txt");
$array2=file("spisok2.txt");
foreach ($array1 as $value)
{
if(trim($value))
{
foreach($array2 as $key2=>$value2)
{
if(trim($value2) && trim($value2)==trim($value2)){unset($array2[$key2]);}
}
}
}
//print_r($array2); // вывод результирующего массива
//вывод в файл
$file = fopen("spisok2.txt", "w");
fwrite( $file, implode("\n",$array2));
fclose( $file );
chmod ("spisok2.txt", 0777);
?>
seobox
Можно скопировать все в один файл и воспользоваться функцией "удалить дублирующиеся строки" в текстовом редакторе. Под macos это умеет textmate.
Upd. Перечитал вопрос еще раз, понял, что неправ. Мой способ оставит все уникальные домены, а не только те, которых нет в первом файле.
dDan
можно
fwrite(fopen('un.txt,"w"),implode("",array_unique(array_merge(file('1.txt'),file('2.txt'))))) ;