Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Блочная запись в файл, И проверка на повторки. 
:(
    Опции темы
Blaga
Дата 2.2.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЛамМер++
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 15.11.2005
Где: г. Иркутск

Репутация: 2
Всего: 4



Доброго времени суток!
Есть такая проблема. Значит есть у меня файл который нужно прочитать, удалить повторки а записать заново, но по условию его нельзя читать сразу всего. То есть прочесть функцией file а потом убрать все повторки через array_unique не получеться. 
Как сделал я 
Код

<?php
$handle = fopen("res.txt", "r");
$handle2 = fopen("result.txt", "a+");
while (!feof($handle)) {
    $buffer = fgets($handle, 4096);
    echo "buffer=".$buffer."<br>";
    do {
        $buf = fgets($handle2, 4096);
        echo "buf=".$buf."<br>";
        if($buf != $buffer)
        fwrite($handle2,$buffer);
        } while (!feof($handle2)) ;

}
fclose($handle);
fclose($handle);
?>

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


--------------------

http://displayart.ru - Обои.
http://a2themes.ru - Сайт о движках DLE, phpBB3, WordPress.
PM MAIL ICQ   Вверх
Dima 2015
Дата 2.2.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 16.3.2008
Где: SPb

Репутация: 2
Всего: 2



Blaga, а чего за условие такое стремное, что ф-цию file юзать нельзя? Тест чтоли какой-то?

Но что мешает загнать файл в массив построчно твоим собственно способом:

while (!feof($handle)) {
    $buffer[] = fgets($handle, 4096);

Получишь ты массив строк файла $buffer, потом спокойно на него array_unique повесишь и усе...
PM MAIL ICQ   Вверх
Blaga
Дата 2.2.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЛамМер++
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 15.11.2005
Где: г. Иркутск

Репутация: 2
Всего: 4



да, это тест. так делать нельзя потому что в условии задачи есть пункт что размер файла много превышает размер памяти.


--------------------

http://displayart.ru - Обои.
http://a2themes.ru - Сайт о движках DLE, phpBB3, WordPress.
PM MAIL ICQ   Вверх
Blaga
Дата 2.2.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЛамМер++
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 15.11.2005
Где: г. Иркутск

Репутация: 2
Всего: 4



решилось таким кодом.
Код

<?php
global $len_buffer;
$res = "resultus.txt";
$file = "res.txt";
$len_buffer = "4096";
$size1 = filesize($res);
$size2 = filesize($file);

Uslovar ($file,$res);

/*Функция поиска повторов строк */
function Ustr ($fp, $str)
{
   global $len_buffer;
   fseek($fp,0);
   while (!feof ($fp)) {
      $temp = trim(fgets($fp,$len_buffer));
      if ($str == $temp)
      return false;
   }
   return true;
}

/*Функция занесения уникальных слов в результирующий файл*/
function Uslovar ($slovar1,$res)
{
   global $len_buffer;
   $result = fopen($res, 'a+') or die ("Can't open file $res for writing");
           $size = filesize ($slovar1);
           $fp = fopen ($slovar1, 'r') or die ("No such file - $slovar1");
           while (!feof ($fp)) {
                $temp = trim (fgets ($fp, $len_buffer));
                if (Ustr ($result, $temp)) {
                     fseek ($result, 0, SEEK_END);
                     fwrite ($result, $temp . "\r\n");
                }
              }
           fclose ($fp);
   fclose ($result);
}
?>



--------------------

http://displayart.ru - Обои.
http://a2themes.ru - Сайт о движках DLE, phpBB3, WordPress.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.