Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Нужен РНР-скрипт. Может кто поможет?
цитата
16/09/08 в 10:48
 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
цитата
16/09/08 в 11:17
 -=Faraon=-
Код:
<?
$f=fopen("output.txt","w");fwrite($f,implode("",array_diff(file("spisok2.txt"),file("spisok1.txt"))));fclose($f);
?>
цитата
16/09/08 в 11:23
 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);

?>
цитата
16/09/08 в 11:40
 seobox
Можно скопировать все в один файл и воспользоваться функцией "удалить дублирующиеся строки" в текстовом редакторе. Под macos это умеет textmate.

Upd. Перечитал вопрос еще раз, понял, что неправ. Мой способ оставит все уникальные домены, а не только те, которых нет в первом файле.
цитата
16/09/08 в 12:15
 dDan
можно
fwrite(fopen('un.txt,"w"),implode("",array_unique(array_merge(file('1.txt'),file('2.txt'))))) ;


Эта страница в полной версии