Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2011, 12:14   #1
spydark91
Форумчанин
 
Регистрация: 01.06.2011
Сообщений: 215
По умолчанию выырезать строку из файла

нужно вырезать определенную строку из файла
имею предполжим txt файл такого содержания--Вася|Петя|Коля|Маша|Катя|Коля|
надо вырезать-- Маша|

делаю так
PHP код:
<?php
$s
=$_POST['login'];//тут передается нужное имя,к примеру Маша|
$file fopen('файл,содержащий список.txt''r+'); 
$pos1strpos($file,$s);//нашли начало имя
$pos2=strrpos($file,$s);//нашли конец имя

$str1=substr($file,0,$pos1-1);
$str2=substr($file,$pos2);

$str=$str1.$str2;
fwrite($file,$str);
fclose($file);
?>
и в итоге в файле получаю

Resource id #Resource id #3ля|

те список удаляется и записывается какаято фигня
spydark91 вне форума Ответить с цитированием
Старый 09.10.2011, 12:27   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от spydark91 Посмотреть сообщение
$file = fopen('файл,содержащий список.txt', 'r+');
Заменить на:
PHP код:
$file file_get_contents('файл,содержащий список.txt'); 
file_get_contents()

Для удаления фрагмента из строки проще использовать preg_replace() - меньше кода.
Andkorol вне форума Ответить с цитированием
Старый 09.10.2011, 14:15   #3
spydark91
Форумчанин
 
Регистрация: 01.06.2011
Сообщений: 215
По умолчанию

заменил на
Код:
$file = file_get_contents('ва.txt');
но ничего не пишет и не удаляет
spydark91 вне форума Ответить с цитированием
Старый 09.10.2011, 14:22   #4
spydark91
Форумчанин
 
Регистрация: 01.06.2011
Сообщений: 215
По умолчанию

Код:
<?php
$s=$_POST['login'];
$s='Петя';
//$file = fopen('df.txt', 'r+'); 
$file = file_get_contents('online.txt');  
//$pos1= strpos($file,$s);//нашли начало имя
//$pos2=strrpos($file,$s);//нашли конец имя

//$str1=substr($file,0,$pos1-1);
//$str2=substr($file,$pos2);

//$str=$str1.$str2;
$n='';
$str=preg_replace($s,$n,$file);
fwrite($file,$str);
fclose($file);
?>
так тоже не работает
spydark91 вне форума Ответить с цитированием
Старый 09.10.2011, 14:48   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

preg_replace() использует регулярные выражения.

var_dump($file); - покажет, получает ли переменная информацию из файла.

Поиск ошибок и отладка
Andkorol вне форума Ответить с цитированием
Старый 09.10.2011, 15:22   #6
spydark91
Форумчанин
 
Регистрация: 01.06.2011
Сообщений: 215
По умолчанию

можете указать на ошибки в моем коде?
привожу его еще раз
Код:
<?php
//$s=$_POST['login'];
$s='Петя';
$file = fopen('online.txt', 'r+'); 
//$file = file_get_contents('online.txt');  
$pos1= strpos($file,$s);//нашли начало имя
$pos2=strrpos($file,$s);//нашли конец имя

$str1=substr($file,0,$pos1-1);
$str2=substr($file,$pos2);

$str=$str1.$str2;
//$n='';
//$str=preg_replace($s,$n,$file);
fwrite($file,$str);
fclose($file);
?>
и что означает выводимая в файл строка "Resource id #Resource id #3"
spydark91 вне форума Ответить с цитированием
Старый 09.10.2011, 15:30   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от spydark91 Посмотреть сообщение
можете указать на ошибки в моем коде?
....
и что означает выводимая в файл строка "Resource id #Resource id #3"
fopen() - возвращает указатель на обработчик файла(resource), а НЕ содержимое самого файла (как вы предполагаете, судя по вашему коду).

Предпочитаете fopen() - читаем как с ним работать.

С file_get_contents() всё будет реально проще для вас.
Andkorol вне форума Ответить с цитированием
Старый 09.10.2011, 15:48   #8
spydark91
Форумчанин
 
Регистрация: 01.06.2011
Сообщений: 215
По умолчанию

сделал так
Код:
<?php
//$s=$_POST['login'];
$s='Петя';
$file1 = fopen('online.txt', 'r+'); 
$file = file_get_contents('online.txt');  
$pos1= strpos($file,$s);//нашли начало имя
$pos2=strrpos($file,$s);//нашли конец имя

$str1=substr($file,0,$pos1-1);//копируем с начала файла до начала удаляемой строки
$str2=substr($file,$pos2+2);//копируем с конца удаляемой строки +2 позиции

$str=$str1.$str2;//склеиваем строки
//$n='';
//$str=preg_replace($s,$n,$file);
//fwrite($file,$str);
fputs($file1,$str);
fclose($file);
?>
вот что было в файле"Петя|Маша|Валя|Катя|"
вот что стало Петя|Маша|Валя|Катятя|Маша|Валя|Кат я|
почему он добавляет в файл,если у меня стоит r+(перезаписать)?
spydark91 вне форума Ответить с цитированием
Старый 09.10.2011, 16:04   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от spydark91 Посмотреть сообщение
почему он добавляет в файл,если у меня стоит r+(перезаписать)?
А вы попробуйте ходить по ссылкам, которые я вам привожу - и читать, что там написано:
Цитата:
'r+' - Окрывает файл для чтения и записи; помещает указатель в начало файла.
Попробуйте поработать с файлом в разных режимах - и вы сами найдете тот, который подходит для ваших задач.
Это не сложно и полезно, развивает...

PS: а ещё - выводите в браузер вашу переменную $str - чтоб вы могли видеть, что у вас там записывается в файл.

Последний раз редактировалось Andkorol; 09.10.2011 в 16:13. Причина: PS
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
считать строку из файла Farrel Общие вопросы C/C++ 1 09.12.2010 01:47
Считывание всего файла в строку BaSoff Общие вопросы C/C++ 2 21.03.2010 19:05
Занести текст из файла в строку С++ Познающий Помощь студентам 3 10.12.2009 17:50
Прочитать из файла строку ds.Dante Общие вопросы .NET 22 03.09.2009 16:08
Удалить последнюю строку из файла Flame_of_Death Помощь студентам 6 21.07.2009 13:48