| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Как удалить одинаковую строку |
| Автор: nnz 10.9.2006, 11:31 |
| Доброго времени суток. Надо написать скриптик, который удаляет одинаковые строки в файле. Подскажите плиз функцию, с помощью которой удаляется строка из файла. |
| Автор: Mal Hack 10.9.2006, 11:57 |
| file, array_unique |
| Автор: nnz 10.9.2006, 12:26 |
| Большое спасибо. |
| Автор: Vaulter 10.9.2006, 12:50 |
| nnz, чтобы удалить строку из файла надо сначала прочитать . будем читать в массив $c = file($file); теперь номер строки для удаления ($todel) например. или array_map, foreach, ... unset($c[$todel]); теперь обратно в файл: file_put_contents($file, implode("\r\n",$c)); |
| Автор: nnz 10.9.2006, 13:10 | ||
Вот мой код, не судите строго
Только мне кажется, что он некорректно работает с файлами, в которых больше 20к строк Поправьте плиз, если что не так. |
| Автор: Vaulter 10.9.2006, 13:53 |
| nnz, >>Только мне кажется, что он некорректно работает с файлами, в которых больше 20к строк откуда такая информация? когда писал "$way_to_file" подумал че написал??? код можно ужать: $List = file($way_to_file); $Unique_list = array_unique ($List); file_put_contents($way_to_file,implode("\r\n",$Unique_list)); print "Работа завершена"; |
| Автор: nnz 10.9.2006, 14:04 | ||
| >>когда писал "$way_to_file" подумал че написал??? А что тут не так? Путь к файлу берется из html формы? форма в другом файле. >>nnz, >>Только мне кажется, что он некорректно работает с файлами, в которых больше 20к строк >>откуда такая информация? Есть у меня программка с помощью которой тоже можно удалять дубли, так вот в ней результатов получается гараздо больше и повторов вроде нету. (ее не хочу использовать так как работает очень долго на моем компе, а скрипт на php в 10-ки раз быстрее)
Выдает ошибку: Fatal error: Call to undefined function: file_put_contents() in z:\home\localhost\www\delete.php on line 5 |
| Автор: nnz 10.9.2006, 14:39 |
| AztEK Спасибо. А что насчет некорректной работы: Взял для теста файл 10573 строки - скриптом в итоге выдало 4550 строк - программой - 6714 строк (проверил, ни одного дубля не нашел) Какие будут мысли? Почему такая разница? |
| Автор: szz 10.9.2006, 16:57 | ||||
Кстати, 4-я версия еще не считается старой. Вот 5-ая считается како-то нездорово новой, это да.
Мне в голову приходят только коллизии с \r |
| Автор: Mal Hack 10.9.2006, 19:36 |
Это - НЕТ. Нормальная версия... Это раз. А Два, скорее всего памяти не зватило. Хотя маловероятно. |
| Автор: nnz 10.9.2006, 21:31 | ||
Проверял и на меньших файлах - результат тот же. |
| Автор: AztEK 11.9.2006, 11:54 |
| А какой программой? Какой у неё алгоритм определения дублей (в частности, считаются ли разнорегистровые строки одинаковыми)? |
| Автор: nnz 11.9.2006, 14:39 | ||
Да, считаются одинаковыми. |