[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск и удаление строки в файле
nikon2k
Есть 4 файла вида:
логин2
логин3
логин4

(представим себе 4 группы пользователей)

по дефолту после регистрации все пользователи попадают в группу1 - файл no.txt
Пользователи могут сменить свою группу - т.е. пользователь выбирает радиобатон2 - меняет свою группу на вторую (надо удалить пользователя из no.txt и 2.тхт 3тхт 4тхт и добавить в 2.txt), имя пользователя скрипту передается по кукам,


Или если можно скрипт как вообще найти строку в файле и удалить ее




Спустя 58 минут, 51 секунда (12.01.2011 - 04:58) brainraider написал(а):
а что тебе мешает просто взять содержимое файлов и банально, при помощи str_replace заменить имя пользователя и все что тебе еще нужно удалить на пустое место?

Спустя 4 часа, 43 минуты, 28 секунд (12.01.2011 - 09:41) linker написал(а):
А я по другому задам вопрос, что мешает использовать базы данных?

Спустя 2 часа, 45 минут, 10 секунд (12.01.2011 - 12:26) nikon2k написал(а):
эти файлы - acl для сквида

Спустя 16 минут, 15 секунд (12.01.2011 - 12:42) nikon2k написал(а):
каретка удалится??



небудет так:


лог1
лог2

лог4


???

Спустя 18 минут, 27 секунд (12.01.2011 - 13:01) Renden написал(а):
nikon2k
может я несовсем понял суть задачи, но я бы сделал проще:
сделал 1 файлик config.txt
и базу данных где содержаться права и юзеры

собстверно как работать должно, пользоваетель заходит на сайт, и изменяет свою группу, в базу пишеться новое значение и удаляеться старое, а потом из базы выводиться в config.txt полный набор новых прав (этого пользователя с изменениями и всех остальных).
Ну и в php еще добавь exec squid -k reload ^^

Спустя 17 минут, 44 секунды (12.01.2011 - 13:19) nikon2k написал(а):
я в пхп нуб поэтому хотелось бы без бд а просто файлами.



$text = "log"; // Искомая строка
$retext = ""; // Строка замены

$content = file_get_contents('no.txt');
echo $content;

// Осуществляем замену

$content = str_replace($text, $retext, $content);

// Перезаписываем файл

file_put_contents($file, $content);

почему данное не работает?

Спустя 3 минуты, 37 секунд (12.01.2011 - 13:22) nikon2k написал(а):
и еще как я понял данный код не будет удалять \n т.к. при выводе $content все выводится в одну строку.. или я не прав?

Спустя 8 минут, 49 секунд (12.01.2011 - 13:31) Renden написал(а):
nikon2k
<?php
$text = "log"; // Искомая строка
$retext = " "; // Строка замены
$content = file_get_contents('no.txt');
$file = 'no.txt';
echo $content;
// Осуществляем замену
$content = str_replace($text, $retext, $content);
// Перезаписываем файл
file_put_contents($file, $content);
?>


у тя переменная $file не существовала

Да выводиться в 1 сроку, удалять он будет только слово целиком, думаю пустые строчки остануться.

Спустя 15 минут, 7 секунд (12.01.2011 - 13:46) nikon2k написал(а):
спасибо! теперь думаю как дать www-data права на переконфигурацию сквида в судоерс не помогает добавить

Спустя 13 минут, 52 секунды (12.01.2011 - 14:00) hellmin написал(а):
Удаляем строку полностью
<?php
$str_find = "Grunge"; // Искомая строка

$filename = "file.dat";// Наш файл
$file = file( $filename ); //Считываем файл в массив

foreach( $file as $key=>$value ) // Перечитываем массив
{
if( preg_match( "/^" . $str_find . "$/", trim($value), $m ) ) // В случае совпадения строки с искомой строкой
unset( $file[$key] ); // Удаляем элемент массива
}

$handle = fopen( $filename, "w" ); // Открывам файл для записи уже обновлённых данных
fputs( $handle, implode( "", $file ) ); // Записываем оставшиеся элементы, предварительно соеденив их в строку
fclose( $handle ); // Закрываем файл
?>

Спустя 6 минут, 46 секунд (12.01.2011 - 14:07) nikon2k написал(а):
пред вариант вроде полегче и делает тоже самое если вставить в заменяемую строку \n

Спустя 4 минуты, 18 секунд (12.01.2011 - 14:11) hellmin написал(а):
Согласен но тогда какой результат будет если в файле такие записи:
текст
не текст
текстиль

и заменить слово "текст" на " "?

Спустя 18 минут, 43 секунды (12.01.2011 - 14:30) nikon2k написал(а):
не указал сори что логины не могут быть с пробелами, только
ываыва
ссмвпук
42334423
лдоаы

etc...

Спустя 4 минуты, 25 секунд (12.01.2011 - 14:34) hellmin написал(а):
Да наплевать на пробелы...
текст
нетекст
текстиль

И если заменить "текст" на " ", то получится
(пробел)
не(пробел)
(пробел)иль

Спустя 2 часа, 10 минут, 26 секунд (12.01.2011 - 16:45) nikon2k написал(а):
так ищется то строка $user."\n" т.е. с концом строки

Спустя 9 часов, 40 минут, 49 секунд (13.01.2011 - 02:25) brainraider написал(а):
Конечно же правильнее использовать БД
тут и время обработки информации меньше да и просто правильно

но все же если человек пока что не хочет делать правильно и по-умному - то есть вариант такой:

при добавлении в файл логина(login) и пароля(pass)
забивать все это, допустим так:

<login_логин+pass_пароль> и при замене делать уже так:

$cherez_chayku = str_replace("<login_{$login}+pass_{$pass}>","",$cherez_chayku)

но тут нужно учитывать, что в логине и пароле не могут встречаться символы-разделители

и, все же, советую потратить 2 часа времени и сделать все не через "чайку" а через БД
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.