С .txt файлом на сервере! - Вопросы и ответы, обсуждения - Ваши вопросы по Web-программированию только в данном разделе
06.09.2011, 17:23
#1
Сержант
Регистрация: 14.06.2011
Сообщений: 124
Популярность: 142
Сказал(а) спасибо: 71
Поблагодарили 70 раз(а) в 36 сообщениях
С .txt файлом на сервере!
Допустим на сервере у меня есть .txt файл! В yqv есть текст:
Допустим мне нужно убрать 5646 и чтобы стало так:
Подскажите такой .php код и скажите какой нужно посмылать запрос чтобы это произошло нормально!
07.09.2011, 19:26
#2
Разведчик
Регистрация: 10.07.2011
Сообщений: 24
Популярность: 12
Сказал(а) спасибо: 3
Поблагодарили 1 раз в 1 сообщении
Re: С .txt файлом на сервере!
[Ссылки могут видеть только зарегистрированные пользователи. ]
Прочти внимательно
Пользователь сказал cпасибо:
10.09.2011, 17:54
#3
Сержант
Регистрация: 14.06.2011
Сообщений: 124
Популярность: 142
Сказал(а) спасибо: 71
Поблагодарили 70 раз(а) в 36 сообщениях
Re: С .txt файлом на сервере!
Koka90 , ну а допустим мне нужно убрать определённый текст
12.09.2011, 15:12
#4
Разведчик
Регистрация: 10.07.2011
Сообщений: 24
Популярность: 12
Сказал(а) спасибо: 3
Поблагодарили 1 раз в 1 сообщении
Re: С .txt файлом на сервере!
Считал содержимое файла в строку->убрал что нужно->перезаписал файл.
13.09.2011, 12:55
#5
Разведчик
Регистрация: 25.12.2009
Сообщений: 29
Популярность: 145
Сказал(а) спасибо: 4
Поблагодарили 34 раз(а) в 20 сообщениях
Re: С .txt файлом на сервере!
повторяющиеся строки удалить из файла?
PHP код:
<?php
$file1 = $_SERVER [ 'DOCUMENT_ROOT' ]. '/1.txt' ; //путь до файла
$file2 = $_SERVER [ 'DOCUMENT_ROOT' ]. '/2.txt' ;
$f1 = fopen ( $file1 , 'r' );
$f2 = fopen ( $file2 , 'w' );
$str_array = array();
while( $str = fgets ( $f1 , 1024 ))
{
$str_array [] = trim ( $str );
}
$str_array = array_unique ( $str_array ); //оставляем уникальные значения
foreach ( $str_array as $item ) //записываем уникальные значения в другой файл
{
fputs ( $f2 , $item . "\r\n" );
}
?>
Добавлено через 26 минут
Цитата:
Koka90 , ну а допустим мне нужно убрать определённый текст
упс, не заметил,тогда:
PHP код:
<?
$file=file("num.txt");//файл с числами
@$file2=fopen("correct.txt","w+");// создаём файл, в который записывать то что надо будем
$searchstring="123";//или $searchstring=$_GET['searchstring'];//задаём строку поиска
for ($i=0;$i<sizeof($file);$i++)
{
if(strstr($file[$i],$searchstring))
{
unset($file[$i]);
}
}
foreach ($file as $item) //записываем уникальные значения в другой файл
{
fputs($file2,$item."\r\n");
}
?>
Последний раз редактировалось Fiery Dragon; 13.09.2011 в 13:22 .
Причина: Добавлено сообщение
Пользователь сказал cпасибо:
15.09.2011, 04:53
#6
Разведчик
Регистрация: 04.09.2011
Сообщений: 2
Популярность: 20
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 5 сообщениях
Re: С .txt файлом на сервере!
Если лень читать кучу текста, то читай последний код.
Все бы хорошо, но:
1) @ перед $file2? o_O
2) Зачем открывать $file2 для чтения и записи? Достаточно одной записи.
3) Везде двойные кавычки //нашел к чему придраться, но все-таки
4) sizeof($file) в цикле - это мощно. Т.е. каждую итерацию массив будет пересчитываться.
В принципе размер массива нам тут даже и не нужен.
5) Далее strstr - поиск текста в строке? Очередной ненужный цикл
6) $item."\r\n" - ты же не удалил \n, куда пихаешь еще один? В итоге файл получается чересстрочным.
7) Не закрыл ресурс $file2
Варианты:
1) Указанный выше:
PHP код:
$file = file ( $read );
@ $file2 = fopen ( $write , 'w+' );
$searchstring = 'atata' ;
for ( $i = 0 ; $i < sizeof ( $file ); $i ++)
{
if( strstr ( $file [ $i ], $searchstring ))
{
unset( $file [ $i ]);
}
}
foreach ( $file as $item )
{
fputs ( $file2 , $item . "\r\n" );
}
fclose ( $file2 );
2) Оптимизированный первый пункт:
PHP код:
$file = array_map ( 'trim' , file ( $read ));
$searchstring = 'asdf' ;
for ( $i = 0 ; isset( $file [ $i ]); $i ++)
if ( $file [ $i ] == $searchstring )
unset( $file [ $i ]);
$file2 = fopen ( $write , 'w' );
foreach ( $file as $item ) fputs ( $file2 , $item . "\r\n" );
fclose ( $file2 );
3) Коротко и лаконично через замену строки (str_replace) и без использования циклов и fwrite\fputs:
PHP код:
$array = "asdf\r\n" ;
if ( $file = file_get_contents ( $read ))
file_put_contents ( $write , str_replace ( $array , '' , $file ));
4) Немного извращенный вариант через поиск ключа (array_search) и объединение (implode)
PHP код:
if ( $file = file ( $read ))
{
$file = array_map ( 'trim' , $file );
$array = 'asdf' ;
$key = array_search ( $array , $file );
if ( $key !== false ) unset( $file [ $key ]);
file_put_contents ( $write , implode ( "\r\n" , $file ));
}
Где:
PHP код:
$read = './file_read.txt' ; //файл для чтения
$write = './file_write.txt' ; //файл для записи
Время исполнения при одиночных обработках:
1: 1.634 мСек
2: 1.073 мСек
3: 0.762 мСек
4: 0.898 мСек
Время исполнения по 100 раз:
1: 83.465 мСек
2: 81.351 мСек
3: 70.223 мСек
4: 75.231 мСек
При этом 3 метод можно просто и безболезненно переделать под удаление сразу нескольких элементов.
Если не читать весь бред что выше, то оптимальным вариантом является сие:
PHP код:
$read = './file_read.txt' ; //файл для чтения
$write = './file_write.txt' ; //файл для записи
$array = "asdf\r\n" ; //что удаляем
if ( $file = file_get_contents ( $read ))
file_put_contents ( $write , str_replace ( $array , '' , $file ));
Пользователь сказал cпасибо:
16.09.2011, 16:10
#7
Разведчик
Регистрация: 04.09.2011
Сообщений: 2
Популярность: 20
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 5 сообщениях
Re: С .txt файлом на сервере!
Кстати, если появится необходимость в удалении сразу нескольких значений, то последний код будет выглядеть так:
PHP код:
$read = './file_read.txt' ;
$write = './file_write.txt' ;
$array = array( "asdf\r\n" , "atata\r\n" , "lolbot\r\n" );
if ( $file = file_get_contents ( $read ))
file_put_contents ( $write , str_replace ( $array , '' , $file ));
Если ты берешь данные от куда-то (допустим из базы или из запроса):
PHP код:
$read = './file_read.txt' ;
$write = './file_write.txt' ;
//Предполагаем что массив $array уже есть и он такого вида: array('asdf', 'qwerty', 'atata');
for( $i = 0 ; isset( $array [ $i ]); $i ++) $array [ $i ] .= "\r\n" ;
if ( $file = file_get_contents ( $read ))
file_put_contents ( $write , str_replace ( $array , '' , $file ));
02.10.2011, 18:40
#8
Сержант
Регистрация: 14.06.2011
Сообщений: 124
Популярность: 142
Сказал(а) спасибо: 71
Поблагодарили 70 раз(а) в 36 сообщениях
Re: С .txt файлом на сервере!
wext01 , можешь собрать пожалуйста всё во едино! а то я на php не програмирую, это нужно для программы на другом языке
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 22:09 .