Реклама на сайте Advertise with us

Скрипт проверки строк на уникальность

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 27.02.04
Сообщения: 926
Рейтинг: 47

Ссылка на сообщениеДобавлено: 08/06/08 в 16:46       Ответить с цитатойцитата 

Понадобилось проверить списочек кейвордов, есть скрипт для простой проверки на уникальность, то есть он выдает результат с уже удаленными повторяющимися строками, а мне нужно знать какие строки были не уникальными (дублированными).

Может кто встречал сервис, скрипт нужен для единоразовой проверки,заказывать не очень хочется icon_smile.gif

Фарма на пике популярности. Evapharmacy.ru – 5 лет с Вами!

0
 



С нами с 19.10.05
Сообщения: 351
Рейтинг: 755

Ссылка на сообщениеДобавлено: 08/06/08 в 20:46       Ответить с цитатойцитата 

Код:
<?
$input_file=file('input.txt'); // грузим файл с кеями
$output_file="output.txt"; // сюда пишем отчищенный от дубликатов
$dublicat_file="dublicat.txt"; // тут дубликаты
$mas=array();
for($i=0;$i<count($input_file)-1;$i++){
   for($z=($i+1);$z<count($input_file);$z++){
   if (strcasecmp(trim($input_file[$i]), trim($input_file[$z])) == 0) {$mas[]=$input_file[$i];}}}
$f=fopen($output_file,"w");fwrite($f,implode("",array_unique($input_file)));fclose($f);
$f=fopen($dublicat_file,"w");fwrite($f,implode("",array_unique($mas)));fclose($f);
?>

4
 



С нами с 27.02.04
Сообщения: 926
Рейтинг: 47

Ссылка на сообщениеДобавлено: 08/06/08 в 21:19       Ответить с цитатойцитата 

Спасибо -=Faraon=-, +4 к рейтингу и респекты прилагаются icon_smile.gif

Фарма на пике популярности. Evapharmacy.ru – 5 лет с Вами!

0
 

127.0.0.1

С нами с 26.04.06
Сообщения: 1092
Рейтинг: 557

Ссылка на сообщениеДобавлено: 08/06/08 в 23:20       Ответить с цитатойцитата 

как все сложно-то... проще надо быть, проще

Код:

<?
#зохавать в массив
$a1=explode("\n",str_replace("\r",'',chop(file_get_contents("input.txt"))));

#зосортировать
sort($a1);

#определить дубли
$a2=array();
foreach($a1 as $n=>$v) {
if ($a1[$n-1]==$a1[$n]) {$a2[]=$v;}
}

#зописать резалт
$z=fopen("output.txt","w");
fputs($z,join("\n",array_unique($a2)));
fclose($z);

?>


вот собственно и все, строки, которые были дублировоны записаны в output.txt

0
 



С нами с 21.07.06
Сообщения: 494
Рейтинг: 253

Ссылка на сообщениеДобавлено: 09/06/08 в 06:09       Ответить с цитатойцитата 

А если нужно локально, есть прога под винду - Text Duplicate Killer называется.

Лучшие платнички от Успешных Адвертов ВСЕХ ниш.
1080P Full HD Player за 34$, 3D очки за 1,5$ из Китая

0
 



С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 09/06/08 в 14:40       Ответить с цитатойцитата 

localhost писал:
как все сложно-то... проще надо быть, проще

Можно быстрее без сортировки...
Код:

<?php
#зохавать в массив
$a1=explode("\n",str_replace("\r",'',chop(file_get_contents("input.txt"))));

$a2=array();
foreach($a1 as $v) {
$a2[$v]=isset($a2[$v])?1:0;
}

#зописать резалт
$z=fopen("output.txt","w");
fputs($z,join("\n",array_keys($a2,1)));
fclose($z);
?>

0
 

127.0.0.1

С нами с 26.04.06
Сообщения: 1092
Рейтинг: 557

Ссылка на сообщениеДобавлено: 10/06/08 в 11:49       Ответить с цитатойцитата 

сортировка как раз нужна, все строчки будут отсортированы и дубли будут находится следом друг за другом, а потом нужно проверять лишь равна предыдущая строчка текущей и если да, значит дубль

0
 



С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 10/06/08 в 11:57       Ответить с цитатойцитата 

Ясное дело, что она нужна в Вашем алгоритме.
Только трудоёмкость сортировки в общем случае растёт в квадрате.
А потом ещё и монстр array_unique

0
 

пенсионер

С нами с 07.11.02
Сообщения: 2612
Рейтинг: 1166

Ссылка на сообщениеДобавлено: 10/06/08 в 12:32       Ответить с цитатойцитата 

а можно еще так приколоться.
$fp=fopen("output.txt","w");
foreach (array_count_values(file('input.txt')) as $n=>$k) {if($k>1) fwrite($fp,"$n\n") ;}
fclose($fp);

на самом деле, на больших файлах самый правильный вариант делать из шела sort, а потом построчную сверку строк.
В пхп все команды использующие массивы жрут уйму памяти (до 5 раз больше обьема самих данных в массиве).

Здесь ищу и даю работу^так делаю деньги
тут читаю инфу^веду блог, а вы?

0
 



С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 10/06/08 в 13:24       Ответить с цитатойцитата 

bog писал:
а можно еще так приколоться.

Да. Это решение ещё лучьше. И далеко не прикол.

0
 



С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430

Ссылка на сообщениеДобавлено: 10/06/08 в 16:14       Ответить с цитатойцитата 

Бля а можно еще так
Код:

fwrite(fopen('uniq.txt',"w"),implode(' ',array_unique(explode("\r\n",file_get_contents('raw.txt')))));

охуеть в одну строку ) скобок может не хватать

0
 



С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 10/06/08 в 22:25       Ответить с цитатойцитата 

dDan писал:
Бля а можно еще так
Код:

fwrite(fopen('uniq.txt',"w"),implode(' ',array_unique(explode("\r\n",file_get_contents('raw.txt')))));

охуеть в одну строку ) скобок может не хватать

Стартер вроде хотел другого:
Цитата:

то есть он выдает результат с уже удаленными повторяющимися строками, а мне нужно знать какие строки были не уникальными (дублированными).

0
 



С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430

Ссылка на сообщениеДобавлено: 11/06/08 в 07:53       Ответить с цитатойцитата 

Сорри видимо я не вчитался....

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »