Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 29.03.2016
Сообщений: 48

Удаление данных из одного файла и добавление в другой

12.06.2019, 08:58. Показов 1705. Ответов 6

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста. наткнулся на проблему: есть txt файл в котором находятся данные, есть код который выводит все данные на экран, добавляю после каждой строки 2 кнопки:
PHP
1
2
3
$text = file('file2.txt'); 
foreach($text as $t) {echo $t."<form method='POST'><input type='submit' value='правильно' name='truee[]'>
<input type='submit' value='неправильно' name='falsee[]'></form>";}
теперь нужно сделать так, что бы когда нажимал на кнопку "правильно" то эту строку добавлял на другой файл, а если нажать на "неправильно", то удалять с 1 файла эту строку
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.06.2019, 08:58
Ответы с готовыми решениями:

Добавление данных из одного datagridview в другой
Добрый день. Делаю своеобразный интернет-магазин с использованием c#. Есть 2 datagridview. Первый выступает в качестве каталога товаров,...

Добавление текста из одного файла в другой батником
Добрый день, подскажите, есть два файла с логами - нужно их объединить в один. Как это можно сделать при помощи батника?

Добавление текста из одного текстового файла в другой
Задание: Даны два текстовых файла. Добавить в конец первого файла содержимое второго, а в конец второго файла - содержимое первого файла....

6
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
14.06.2019, 01:10
Если не нужно искать позицию строки в файле, тоесть файл состоит из одной строки, то по идее так:
PHP
1
2
3
4
5
6
7
8
9
10
11
if (isset($_POST['truee'])) {put_content();}
if (isset($_POST['falsee'])){del_content();}
function  put_content() 
{
  file_put_contents('имя и путь к файлу куда записать',$t);  // запишет в файл строку $t
}
function del_content()
{
  $t1='';   // заменяем строку пустым значением
  file_put_contents('file2.txt',$t1)
}
Ну а если нужно искать строку в файле, то в функции добавления-удаления добавить поиск позиции strpos.
А если удалять строку из массива, то unset
1
0 / 0 / 0
Регистрация: 29.03.2016
Сообщений: 48
14.06.2019, 12:19  [ТС]
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Если не нужно искать позицию строки в файле, тоесть файл состоит из одной строки, то по идее так:
PHP
1
2
3
4
5
6
7
8
9
10
11
if (isset($_POST['truee'])) {put_content();}
if (isset($_POST['falsee'])){del_content();}
function  put_content() 
{
  file_put_contents('имя и путь к файлу куда записать',$t);  // запишет в файл строку $t
}
function del_content()
{
  $t1='';   // заменяем строку пустым значением
  file_put_contents('file2.txt',$t1)
}
Ну а если нужно искать строку в файле, то в функции добавления-удаления добавить поиск позиции strpos.
А если удалять строку из массива, то unset
функция del_content() удалила все строки в файле, а не именно эту строку
file_put_contents('file.txt',$t) так ведь? написал так и тоже все строки удалились с файла и не записался
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
14.06.2019, 16:26
Лучший ответ Сообщение было отмечено Oltirem как решение

Решение

Цитата Сообщение от Oltirem Посмотреть сообщение
функция del_content() удалила все строки в файле, а не именно эту строку
file_put_contents('file.txt',$t) так ведь? написал так и тоже все строки удалились с файла и не записался
Так я потому и сказал:
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Если не нужно искать позицию строки в файле, тоесть файл состоит из одной строки, то по идее так:
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Ну а если нужно искать строку в файле, то в функции добавления-удаления добавить поиск позиции strpos.
А если удалять строку из массива, то unset
Ну а то, что
Цитата Сообщение от Oltirem Посмотреть сообщение
file_put_contents('file.txt',$t) так ведь? написал так и тоже все строки удалились с файла и не записался
У вас по какой-то причине переменная $t оказалось пустой. Вот он пустоту и записал. Поскольку я не знаю остальных подробностей вашего файла, то скорее всего проблема из-за области видимости. Пропишите в функции put_content() global $t.
И учтите, если все же удалять нужно именно из массива, то unset удаляет именно виртуально из массива, в исходном файле строка остается. Ну а strpos можно сразу на str_replace заменить.

Добавлено через 3 часа 5 минут
Прочитал внимательно ваше первое сообщение. У вас там неточность, которая впоследствии приведет к тому, что работать будете только с последней строкой массива. Соответственно все решение чуток по-другому будет
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$text = file('file2.txt'); 
foreach($text as $key=>$t) 
  {
    echo $t."<form method='POST'><input type='submit' value='правильно' name='truee[$key]'>
<input type='submit' value='неправильно' name='falsee[$key]'></form>";
   }
// проверка нажатия клавиши "правильно"
$tkey['$key']='';
if (isset($_POST['truee']))
{
   foreach ($_POST['truee'] as $key=>$val)
   {
      if (isset($tkey[$key])) {$tkey[$key]=$val;}
   }
   put_content();
}
// проверка нажатия клавиши "неправильно"
$fkey['$key']='';
if (isset($_POST['falsee']))
{
   foreach ($_POST['falsee'] as $key=>$val)
   {
      if (isset($fkey[$key])) {$fkey[$key]=$val;}
   }
   del_content();
}
function  put_content()
{
global $text; 
global $key; 
  echo $text[$key];  // это просто проверка ту ли строку хотите вписать, её можно закоментировать
  file_put_contents('file.txt',$text[$key]);
}
function del_content()
{
 global $text; 
global $key; 
echo "хочу удалить  '".$text[$key]."'из файла";  // это просто проверка ту ли строку хотите удалить, её можно закоментировать
  $t1='';   // строка с пустым значением для замены
   $replace=str_replace($text[$key],$t1,file_get_contents('file2.txt'));
  file_put_contents('file2.txt',$replace);
}
И чтобы правильно вписать в новый файл правильную строку, нужно понимать куда именно вы хотите вписать и сделать проверку по аналогии с функцией удаления строки, только скорее всего правильнее было бы использовать не str_replace а preg_replace. Допустим вам нужно вставить между двумя словами "ogo" и "molodec". Тогда функция на запись правильной строки будет выглядеть так:
PHP
1
2
3
4
5
6
7
8
9
function  put_content()
{
global $text; 
global $key; 
  echo $text[$key];  // это просто проверка ту ли строку хотите вписать, её можно закоментировать
$prav=file_get_contents('file.txt');
$prav=preg_replace('/(ogo)(.*)(molodec)/','$1'.$text[$key].'$3',$prav);
  file_put_contents('file.txt',$prav);
}
Ну а уже от условий вставки остается совсем чуть чуть подрихтовать
1
0 / 0 / 0
Регистрация: 29.03.2016
Сообщений: 48
14.06.2019, 19:51  [ТС]
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Так я потому и сказал:


Ну а то, что
У вас по какой-то причине переменная $t оказалось пустой. Вот он пустоту и записал. Поскольку я не знаю остальных подробностей вашего файла, то скорее всего проблема из-за области видимости. Пропишите в функции put_content() global $t.
И учтите, если все же удалять нужно именно из массива, то unset удаляет именно виртуально из массива, в исходном файле строка остается. Ну а strpos можно сразу на str_replace заменить.

Добавлено через 3 часа 5 минут
Прочитал внимательно ваше первое сообщение. У вас там неточность, которая впоследствии приведет к тому, что работать будете только с последней строкой массива. Соответственно все решение чуток по-другому будет
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$text = file('file2.txt'); 
foreach($text as $key=>$t) 
  {
    echo $t."<form method='POST'><input type='submit' value='правильно' name='truee[$key]'>
<input type='submit' value='неправильно' name='falsee[$key]'></form>";
   }
// проверка нажатия клавиши "правильно"
$tkey['$key']='';
if (isset($_POST['truee']))
{
   foreach ($_POST['truee'] as $key=>$val)
   {
      if (isset($tkey[$key])) {$tkey[$key]=$val;}
   }
   put_content();
}
// проверка нажатия клавиши "неправильно"
$fkey['$key']='';
if (isset($_POST['falsee']))
{
   foreach ($_POST['falsee'] as $key=>$val)
   {
      if (isset($fkey[$key])) {$fkey[$key]=$val;}
   }
   del_content();
}
function  put_content()
{
global $text; 
global $key; 
  echo $text[$key];  // это просто проверка ту ли строку хотите вписать, её можно закоментировать
  file_put_contents('file.txt',$text[$key]);
}
function del_content()
{
 global $text; 
global $key; 
echo "хочу удалить  '".$text[$key]."'из файла";  // это просто проверка ту ли строку хотите удалить, её можно закоментировать
  $t1='';   // строка с пустым значением для замены
   $replace=str_replace($text[$key],$t1,file_get_contents('file2.txt'));
  file_put_contents('file2.txt',$replace);
}
И чтобы правильно вписать в новый файл правильную строку, нужно понимать куда именно вы хотите вписать и сделать проверку по аналогии с функцией удаления строки, только скорее всего правильнее было бы использовать не str_replace а preg_replace. Допустим вам нужно вставить между двумя словами "ogo" и "molodec". Тогда функция на запись правильной строки будет выглядеть так:
PHP
1
2
3
4
5
6
7
8
9
function  put_content()
{
global $text; 
global $key; 
  echo $text[$key];  // это просто проверка ту ли строку хотите вписать, её можно закоментировать
$prav=file_get_contents('file.txt');
$prav=preg_replace('/(ogo)(.*)(molodec)/','$1'.$text[$key].'$3',$prav);
  file_put_contents('file.txt',$prav);
}
Ну а уже от условий вставки остается совсем чуть чуть подрихтовать
удаление работает на отлично. а насчет записи в другой файл, нужно просто вписать строку в конце файла(file.txt)
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
15.06.2019, 00:15
Цитата Сообщение от Oltirem Посмотреть сообщение
удаление работает на отлично. а насчет записи в другой файл, нужно просто вписать строку в конце файла(file.txt)
Здается мне, что вы студент ))) и у вас летняя сессия, а это домашнее задание ))) учится нужно, а не списывать )))
На самом деле, то что вам нужно - ещё проще
PHP
1
2
3
4
5
6
7
function  put_content()
{
global $text; 
global $key; 
  echo $text[$key];  // это просто проверка ту ли строку хотите вписать, её можно закоментировать
  file_put_contents('file.txt',$text[$key],FILE_APPEND); // этот ключ добавляет инфу новой строкой в конец файла
}
Обо всем этом можно прочитать в примерах Мануала.
https://www.php.net/manual/ru/ref.filesystem.php
https://www.php.net/manual/ru/book.strings.php
Читайте, учитесь. Ато препод спросит, как работает проверка нажатия кнопки, и почему она именно в таком виде (а её можно записать в более длинном виде), ну или ещё что-нибудь, и что вы ответите? ))))
1
0 / 0 / 0
Регистрация: 29.03.2016
Сообщений: 48
15.06.2019, 08:37  [ТС]
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Здается мне, что вы студент ))) и у вас летняя сессия, а это домашнее задание ))) учится нужно, а не списывать )))
На самом деле, то что вам нужно - ещё проще
PHP
1
2
3
4
5
6
7
function  put_content()
{
global $text; 
global $key; 
  echo $text[$key];  // это просто проверка ту ли строку хотите вписать, её можно закоментировать
  file_put_contents('file.txt',$text[$key],FILE_APPEND); // этот ключ добавляет инфу новой строкой в конец файла
}
Обо всем этом можно прочитать в примерах Мануала.
https://www.php.net/manual/ru/ref.filesystem.php
https://www.php.net/manual/ru/book.strings.php
Читайте, учитесь. Ато препод спросит, как работает проверка нажатия кнопки, и почему она именно в таком виде (а её можно записать в более длинном виде), ну или ещё что-нибудь, и что вы ответите? ))))
Спасибо огромное! Объясню как-нибудь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.06.2019, 08:37
Помогаю со студенческими работами здесь

Автоматическое добавление данных из одного листа на другой с накоплением истории
Здравствуйте. Смастерил тут макрос, с вашей помощью. Функция такая что при появлении данных на первом листе, происходит проверка на...

Перенос данных из одного файла в другой
День добрый! Помогите решить задачу! Условие: &quot;Сформировать файл, содержащий записи по результатам сдачи очередного экзамена...

Копирование данных из одного файла в другой
Написать программу, которая копирует данные из одного файла в другой, но при этом меняет каждый третий символ на латинский символ X на С++

Передача данных из одного файла в другой
Помогите разобраться, как правильно(!) передавать переменные, массивы и т.д., объявленные в одном файле, в другой, чтобы с ними можно было...

Подстановка данных из одного файла в другой
Прикрепляю файл с заданием... офис 2007 я не очень хорошо знаю иксель... буду рад любой помощи


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru