|
|
|
| Как в файле можно удалить строки - всё что больше 100?
Т.е. в файле должно быть не более 100 строк - если больше удалить.
$file = "text.txt";
$f=fopen($file,"a");
for ($i > 100; $i++) {
удалить всё и поставить курсор в начало файла. Как???
}
fclose($f);
|
| |
|
|
|
|
|
|
|
для: Владимир22
(01.09.2008 в 19:56)
| | Можно так...
Открываете файл для чтения
Открываете файл для записи
Из одного в другой пишите нужное количество строк
Закрываете файл для чтения и удаляете его
Закрываете файл для записи и переименовываете его | |
|
|
|
|
|
|
|
для: Владимир22
(01.09.2008 в 19:56)
| |
<?php
$fh = fopen('file.txt', 'r+');
for($l = 0; $l < 100 && fgets($fh); $l++);
ftruncate($fh, ftell($fh));
fclose($fh);
?>
|
| |
|
|
|
|
|
|
|
для: BinLaden
(01.09.2008 в 20:43)
| | А если в файле 1000000 строк чей алгоритм сработает быстрее?))
И если в файле менее 100 строк?
Не могли бы вы пояснить код, очень хочу разобраться, а что-то ускользает.
в частности непонятно
fgets
Возвращает строку размером в length - 1 байт, прочитанную из дескриптора файла, на который указывает параметр handle . Чтение заканчивается, когда количество прочитанных байтов достигает length - 1, по достижении конца строки (который включается в возвращаемое значение) или по достижении конца файла (что бы ни встретилось первым). Если длина не указана, по умолчанию ее значение равно 1 килобайту или 1024 байтам. | |
|
|
|
|
|
|
|
для: Valick
(01.09.2008 в 23:15)
| | > А если в файле 1000000 строк чей алгоритм сработает быстрее?))
С каким алгоритмом я должен сравнивать?
> Не могли бы вы пояснить код, очень хочу разобраться, а что-то ускользает.
в частности непонятно
Если в файле менее 100 строк, то дальше выполнение цикла бессмысленно.
> И если в файле менее 100 строк?
Ну...См. выше
> Возвращает строку размером в length - 1 байт, прочитанную из дескриптора файла, на который указывает параметр handle . Чтение заканчивается, когда количество прочитанных байтов достигает length - 1, по достижении конца строки (который включается в возвращаемое значение) или по достижении конца файла (что бы ни встретилось первым). Если длина не указана, по умолчанию ее значение равно 1 килобайту или 1024 байтам.
Я могу только посоветовать читать англоязычную версию мануала...Там как-то чаще обновляют информацию. | |
|
|
|
|
|
|
|
для: BinLaden
(01.09.2008 в 23:42)
| | С каким алгоритмом я должен сравнивать?
с тем который я описал, ладно можете не отвечать... урезает так урезает | |
|
|
|
|
|
|
|
для: Valick
(01.09.2008 в 23:45)
| | > с тем который я описал
Попробуйте сначала его реализовать. Получится - покажите код. | |
|
|
|
|
|
|
|
для: BinLaden
(01.09.2008 в 23:46)
| | Сомневаетесь? Или это личная неприязнь ко мне?))
Что вы хотите услышать? Что вы умнее меня в этом, да вы умнее меня.
Мне действительно непонятно условие цикла, но это вовсе не означает что я безнадёжен. | |
|
|
|
|
|
|
|
для: Valick
(01.09.2008 в 23:52)
| | Не совсем Вас понимаю: это Вы начали спор, в чем я виноват?
Поэтому я жду конкретики, а не бла-бла.
И давайте не говорить кто тут умнее. Вы когда научились молотком гвоздь вбивать - Вы умнее не стали, ровно как и все мы, когда подучили PHP. | |
|
|
|
|
|
|
|
для: BinLaden
(01.09.2008 в 23:55)
| | это Вы начали спор
Я начал не спор а всего лишь задал несколько вопросов, и поверьте абсолютно без задней мысли, а по причине моей любознательности. Спорили мы с вами в другом топике и я надеюсь это ни коим образом не отразится здесь. | |
|
|
|
|
|
|
|
для: Valick
(01.09.2008 в 23:59)
| | Я на Ваши вопросы ответил.
А вот тем, что Вы спросили по поводу что быстрее...Тут я несколько озадачен, потому как конкретно описанный Вами алгоритм, думаю, невозможно реализовать: открывая опять файл с перезаписью Вы затираете его и считывать будет нечего. Возможно я ошибаюсь, вот и предложил показать код. | |
|
|
|
|
|
|
|
для: BinLaden
(02.09.2008 в 00:04)
| | открывая опять файл с перезаписью
там речь о двух разных файлах, просто я наверное несколько неясно выразился. | |
|
|
|
|
|
|
|
для: BinLaden
(01.09.2008 в 23:55)
| | Поэтому я жду конкретики, а не бла-бла.
Т.е. что бы проверить закон Ньютона необходимо всенепременно прыгнуть с тринадцатого этажа?) | |
|
|
|
|
|
|
|
для: Valick
(02.09.2008 в 00:06)
| | Вообще-то Вы почти правы. Физика неразрывно связана с опытом. И любой закон должен быть доказан и на практике. | |
|
|
|
|
|
|
|
для: Valick
(01.09.2008 в 23:52)
| | fgets() там используется лишь для того, чтобы смещать указатель файла в конец прочтенной строки. Таким образом, условие можно описать так:
Пока l < 100 И fgets($fh) возвращает true (то есть, прочитана очередная строка и указатель файла установлен в ее конец)
|
Потом функцией ftell($th) вычисляем где остановился указатель после выполнения цикла и с помощью ftruncate($fh, ftell($fh)) обрезаем файл от начала, до размера, который будет равен смещению файлового указателя. | |
|
|
|
|
|
|
|
для: Drago
(02.09.2008 в 00:04)
| | ftruncate($fh, ftell($fh))
с этом-то проблем не возникло
Спасибо за обьяснение, терь понятно) | |
|
|
|