![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| nnz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
Доброго времени суток.
Надо написать скриптик, который удаляет одинаковые строки в файле. Подскажите плиз функцию, с помощью которой удаляется строка из файла. |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
file, array_unique
|
|||
|
||||
| nnz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
Большое спасибо.
|
|||
|
||||
| Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 6 Всего: 22 |
nnz, чтобы удалить строку из файла
надо сначала прочитать . будем читать в массив $c = file($file); теперь номер строки для удаления ($todel) например. или array_map, foreach, ... unset($c[$todel]); теперь обратно в файл: file_put_contents($file, implode("\r\n",$c)); |
|||
|
||||
| nnz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
Вот мой код, не судите строго
Только мне кажется, что он некорректно работает с файлами, в которых больше 20к строк Поправьте плиз, если что не так. Это сообщение отредактировал(а) nnz - 10.9.2006, 13:12 |
|||
|
||||
| Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 6 Всего: 22 |
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 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
>>когда писал "$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:10 |
|||
|
||||
| AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 6 Всего: 18 |
Старая версия PHP. Воспользуйся fopen и fwrite или обнови PHP. -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
| nnz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
AztEK Спасибо.
А что насчет некорректной работы: Взял для теста файл 10573 строки - скриптом в итоге выдало 4550 строк - программой - 6714 строк (проверил, ни одного дубля не нашел) Какие будут мысли? Почему такая разница? |
|||
|
||||
| szz |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 8 Всего: 33 |
Кстати, 4-я версия еще не считается старой. Вот 5-ая считается како-то нездорово новой, это да.
Мне в голову приходят только коллизии с \r --------------------
|
||||||
|
|||||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Это - НЕТ. Нормальная версия... Это раз. А Два, скорее всего памяти не зватило. Хотя маловероятно. |
|||
|
||||
| nnz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
Проверял и на меньших файлах - результат тот же. |
|||
|
||||
| AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 6 Всего: 18 |
А какой программой? Какой у неё алгоритм определения дублей (в частности, считаются ли разнорегистровые строки одинаковыми)?
-------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
| nnz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
Да, считаются одинаковыми. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |