Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653

Удалить из файла несколько строк

22.03.2013, 19:02. Показов 3051. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть форма, примерно такого вида...
HTML5
1
2
3
4
5
6
7
<form action="action.php" method="post">
 
<input type="checkbox" name="type[]" value=0 />2013-03-22 18:07:35: ffffffffffffffff
<br><input type="checkbox" name="type[]" value=1 />2013-03-22 18:07:44: ccccccccccccccccccc
<br><input type="checkbox" name="type[]" value=2 />2013-03-22 18:14:58: xxxxxxx
<br><br><input type="submit" value="Delete" />
 </form>
есть такой код...

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$data_file = file("1.txt"); //Считываем файл в массив
$f=fopen("1.txt","w"); //Открываем для записи
flock ($f,LOCK_EX); //Блокируем во избежание ошибок одновременного доступа
ftruncate ($f,0); //Вычищаем содержимое файла
for($i=0;$i<sizeof($data_file);$i++){
if(isset($_POST['type'][$i])){ //Если мы получили переменную, то
continue; //нифига не делаем просто идем дальше
}
else { //А если нет, пишем строку в файл
fputs($f,$data_file[$i]);
}
}
flock ($f,LOCK_UN); //Снимаем блокировку
fflush($f); //Вычищаем файловый буфер
fclose($f); //Закрываем файл
unset($data_file); //Сносим массив
но этот код удаляет самые первые строки, их количество зависет от ппоставленных галачек, как можно подправить, чтоб удаляло нужные строки?..)

Добавлено через 25 минут
ну в общем, решил немного другой подход взять...вдруг кому понадобится...)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$deleteStringNum = array();
for($i=0;$i<count($_POST['type']);$i++)
{
    if(isset($_POST['type'][$i]))
    {
        array_push($deleteStringNum, $_POST['type'][$i]);
    }
}
foreach($deleteStringNum as $key => $value)
{
    delinfo($value, "1.txt");
}
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
function delinfo ($id, $filecont) 
{
 
        $file=file($filecont);
        $fp=fopen($filecont,"w");
        flock ($fp,LOCK_EX);
        for ($i=0;$i< sizeof($file);$i++) { if ($i==$id) {unset($file[$i]);} }
        fputs($fp, implode("",$file));
        flock ($fp,LOCK_UN);
        fclose($fp);
        @chmod("$filecont", 0644);
}
?>
Добавлено через 12 минут
только тут не работает удаление нескольких строк...(
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2013, 19:02
Ответы с готовыми решениями:

Из текстового файла, содержащего несколько строк, удалить слова максимальной длины и лишние пробелы
Может кто подскажет как делать, ибо понятие как работать со строками и условиями нету. &quot;Из текстового файла, содержащего...

Записать в файл несколько строк, а затем записать несколько строк из этого файла в другой
Заранее создать текстовый файл 1.txt и записать в него несколько строк текста. Программа должна получить из него второй файл 2.txt, в...

Удалить несколько строк из мемо
Вот такой код в memo текст 1 &lt;a href=&quot;...&lt;/a&gt; текст 2 &lt;a href=&quot;...&lt;/a&gt; текст 3 &lt;a href=&quot;...&lt;/a&gt; А надо, чтобы текст 1 ...

3
0 / 0 / 0
Регистрация: 22.03.2013
Сообщений: 5
22.03.2013, 19:06
Печаль....
0
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653
22.03.2013, 20:18  [ТС]
так как после каждого вызова функции, удаляющей строку по номеру, шло смещение удаляемых строк вверх на еденичку, пришлось сделать так, но тоже не работает...прошу помощи...)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$deleteStringNum = array();
for($i=0;$i<count($_POST['type']);$i++)
{
    if(isset($_POST['type'][$i]))
    {
        array_push($deleteStringNum, $_POST['type'][$i]);
    }
}
for($i=0; $i<count($deleteStringNum); $i++)
{
    delinfo($deleteStringNum[$i], $filename);
    foreach($deleteStringNum as $val)
    {
        $val--;
    }
}
Добавлено через 22 минуты
еще раз переделал, теперь точно работает...)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$deleteStringNum = array();
for($i=0;$i<count($_POST['type']);$i++)
{
    if(isset($_POST['type'][$i]))
    {
        array_push($deleteStringNum, (int)$_POST['type'][$i]);
    }
}
$iterCount=0;
for($i=0; $i<(int)count($deleteStringNum); $i++)
{
    delinfo($deleteStringNum[$i]-$iterCount, $filename);
    $iterCount++;
}
велосипеды...)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.03.2013, 21:24
зачем лишний массив, цикл и переменная?
PHP
1
2
3
4
5
6
7
for( $i = 0, $cnt = count($_POST['type']); $i < $cnt; $i++ )
{
    if( isset($_POST['type'][$i]) )
    {
        delinfo( intval($_POST['type'][$i]) - $i, $filename );
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2013, 21:24
Помогаю со студенческими работами здесь

Удалить несколько строк в файле
Dim SB As New System.Text.StringBuilder Dim S() As String =...

Listbox - удалить сразу несколько строк
Добрый день, коллеги! Запарился на ровном месте - как удалить несколько строк из листбокса, если его SelectionMode =...

MSFlexGrid: Как удалить несколько строк?
Прошу прощения за возможно глупый вопрос. В гриде есть две строки, с одинаковым значением одного столбца. Строки идут подряд. Как сделать...

Как одним махом удалить несколько строк?
Есть список из 2500 (примерно) строк. Некоторые строки окрашены определенным цветом, вот их и нужно удалить... Я сделал следующее: ...

Удалить сразу несколько строк из заданного диапазона
Добрый день подскажите пожалуйста, можно ли указать в одном блоке if сразу несколько значений, которые должны содержать строчки на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru