Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Удалить дубликаты из файла
 
 автор: AlexDIXI   (26.05.2008 в 19:36)   письмо автору
 
 

Привет всем.

Какой функцией, можно удалить из файла дубликаты. Без учета регистра.

например в файле :

Машина БМВ
Машина BMW лучшая
Машина audi
Машина БМВ
и т.д.

В файле 10 000 слов, каждое слово нужно проверить на дубликаты..

С Уважением Александр!

   
 
 автор: SiM(R)   (27.05.2008 в 03:16)   письмо автору
 
   для: AlexDIXI   (26.05.2008 в 19:36)
 

Написан под конкретную ситуацию, указанную Вами. Удаляет только обсолютно равные строки.

<?php
$file
=file('text.txt');
$count=count($file);                                              //определяем размер массива
foreach ($file as $str)
{
    
$first=$str;                                                       //берем первую строку, которую будем сравнивать с остальными
    
$i++;
    
$k=$i;
    for (
$k$k<$count+1$k++)
    {
        if (
strtolower($first)==strtolower($file[$k]))                      // сравниваем строки
        
{
            unset (
$file[$k]);                                                              // удаляем из массива похожую
        
}
    }
}
echo 
'<pre>';                                                     // если надо, то выводим на экран получившийся массив
print_r ($file);

$write=fopen('text.txt''w');                                   // пишем все в старый файл, при этом затираем содержимое
foreach ($file as $str)
{
    
$text.=$str;
}
fwrite($write,$text);
fclose($write);

?>

   
 
 автор: AlexDIXI   (28.05.2008 в 03:44)   письмо автору
 
   для: SiM(R)   (27.05.2008 в 03:16)
 

Спасибо за код, очень помогли мне!!

Заметка: провел тест сначала, ввел в базу text.txt

слово 1
слово 2
слово 3
слово 1

получилось:

слово 1
слово 2
слово 3
слово 1

   
 
 автор: SiM(R)   (28.05.2008 в 07:06)   письмо автору
 
   для: AlexDIXI   (28.05.2008 в 03:44)
 

ммм... у меня работает. Наверно проблема в том, что после первого "слово 1" стоит знак переноса, а вот после второго "слово1" знака переноса нет...

   
 
 автор: AlexDIXI   (28.05.2008 в 18:21)   письмо автору
 
   для: SiM(R)   (28.05.2008 в 07:06)
 

Я не оспаривал Вашу работу. Спасибо, а остальное мелочи..

   
 
 автор: mihdan   (27.05.2008 в 18:25)   письмо автору
 
   для: AlexDIXI   (26.05.2008 в 19:36)
 

Разбейте файл, по пробелам например, при помощи explode(), затем array_unique()

   
 
 автор: AlexDIXI   (28.05.2008 в 03:49)   письмо автору
 
   для: mihdan   (27.05.2008 в 18:25)
 

Если я правильно понял, вашу мысль. То Вы предлагаете, выделить слова имеющие, одинаковое количество пробелов?
Но мне это не подходит.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования