Есть такая проблема. Значит есть у меня файл который нужно прочитать, удалить повторки а записать заново, но по условию его нельзя читать сразу всего. То есть прочесть функцией file а потом убрать все повторки через array_unique не получеться. Как сделал я PHP: <?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($handle2); ?> но выходит какой то глюк. Второй цикл замыкаеться и пишеться бесконечно только первая строка, на проверку не обращает внимания. Скажите что сделано не так, или наметьте другой путь. Заранее спасибо.
Пипл,как считать из файла последовательность строк,преобразовав в массив ? Вот,например: Раз два три четыре пять Пробовал по всякому,вот только у меня всё это оказывалось в одном элемент массива)) Преобразовать в массив strings,к примеру
blaga как понял то у тебя 2 вложеных цикла.. причем в первом ты читаешь первую строку, а потом все остальные с ней сравниваешьи пишешь ее.. отсюда и эффект
Code: <?php $handle = fopen("res.txt", "r"); $handle2 = fopen("result.txt", "a+"); $buffer = fgets($handle, 4096); fwrite($handle2, $buffer); while (!feof($handle)) { $buf= fgets($handle, 4096); if($buf == $buffer) { } else { $buffer=$buf; fwrite($handle2, $buffer); } } fclose($handle); fclose($handle2); ?> должно работать. с тебя + )) если не работает отпиши в личку
Велемир file() mixkorshun интерес в том что бы взять первую строку и проверить со всеми теми что уже в файле есть если такой строки нет то записать. но почему то первый цикл не перекручивает на вторую строку...
$a = array(); $fp = fopen("фаил.txt","r"); while(!feof($fp)) { $a[] = fgets($fp,4096); } print_r($a); ?> Вроде так...
работать то она работает, только вот повторки не удаляет. такого эффекта я тоже достиг. велемир перечитай условие. мне нельзя совать файл в массив.
2 blaga: slovar.ini PHP: Результирующий файл: resultus.txt -------------------------------- Обрабатываемый файл: 1.txt -------------------------------- Размер буфера: 4096 slovar.php PHP: <?php global $len_buffer; $ipArray = array_map("trim", file("slovar.ini")); //Файл настроек $res = trim($ipArray[1]); $file = trim($ipArray[4]); $len_buffer = trim($ipArray[7]); $size2 = filesize($file); echo "Result file file - $res\n"; echo "Adding file - $file, size - $size2 bytes\n"; echo "Buffer - $len_buffer bytes\n"; echo "Start, wait please...\n"; echo "---------------------------------------\n"; 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; $date = date("d.m.Y H:i"); echo "$date....Start.Wait please.....\n"; $result = fopen($res, 'w+') or die ("Can't open file $res for writing"); $size = filesize ($slovar1); $fp = fopen ($slovar1, 'r') or die ("No such file - $slovar1"); echo "Size of file " .$size. " bytes\n"; 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); $size1 = filesize ($res); echo "All results saved in $res ($size1 bytes)\n"; } ?>
Code: $buffer = fgets($handle, 4096); echo "buffer=".$buffer."<br>"; fwrite($handle2,$buffer);// он пустой файл читает иначе!!!! вроде как в этом ошибка была.... но неуверен... он у тебя пустой файл читать начинал(handle2)
9*9,9*10,9*11,9*12 - ты это имеешь ввиду ? Если умножать само на себя,то 9*9,10*10,11*11 и т.д. Я тя чёт не догнал( <?php $a = 9; $b = 100; while ($a <=$b) { $a = $a*$a; $a = $a+1; if($a <= $b) { echo "<br>$a</br>"; break; } } ?> Имхо если знак поменять,то бред получится ))))