|
|
|
| К примеру есть пользователи и их настройки хранящиеся
в файлах.Они подписываются на рассылку существующих
на сайте новостей...
Проходит какое-то время и одна из рассылок удаляется из
списка акивных/существующих,
и надо удалить отметку о подписке на эту рассылку из
каждого файла каждого из пользователей.
Файл настроек пользователя Вася:
profil#Вася*man*Вася@mail.ru*Санкт-Петербург#
rasilka#Игры*Софт*Фильмы#
|
К примеру рассылка на новости о новых Фильмах
умерла, и надо удалить метку/слово "Фильмы"
из каждого файла в директории setings....
Кипу тем перечитал по работе с директориями,и файлами,
в частности и статью cheops'а про удаление
строки из файлов в папке, ниФига не получается...=(
PS:Задача не из простых(по крайней мере я не смог её решить).... | |
|
|
|
|
|
|
|
для: method
(15.08.2005 в 03:02)
| | 1) Файлы хранятся в одной директории или разных?
2) Кроме этих двух строк в файле что-нибудь имеется? Или всегда только две строки? | |
|
|
|
|
|
|
|
для: cheops
(15.08.2005 в 03:46)
| | Берёшь сначала цикл, который читает директорию=> далее если файл, то открываешь его внутри цикла=>Смотришь на, то что если совпадения (думаю можно и readfile использовать), а функция str_replace("Это", "Заменить этим", $str);
И если тебе надо пустую строку, то просто Заменить этим пусто делаешь и усё. Я бы так реализовал бы. | |
|
|
|
|
|
|
|
для: method
(15.08.2005 в 03:02)
| | надо всё в БД хранить и никаких траблов не будет, там все проще было бы и быстрее, а каждый файл в цикл загонять это производительность срубит | |
|
|
|
|
|
|
|
для: BuTbKa
(15.08.2005 в 15:33)
| | >1) Файлы хранятся в одной директории или разных?
да в одной
>2) Кроме этих двух строк в файле что-нибудь имеется? Или всегда только две >строки?
только эти две строчки
2Linux: я же сказал что пробовал по всякому, вложеность циклов аж
до 4 доходила....
2Витька: а я не спрашивал как будет лучше, я спросил как решить
задачу именно так как я описал... | |
|
|
|
|
|
|
|
для: method
(15.08.2005 в 16:07)
| | Если файлы находятся в директории temp, а скрипт находится на один уровень выше можно применить следующий код
<?php
$folder = 'temp';
$dir = opendir($folder);
while($line = readdir($dir))
{
if(is_file($folder."/".$line))
{
$arr = file($folder."/".$line);
$ex = explode("#",$arr[1]);
$ext = explode("*",$ex);
for($i=0;$i<count($ext);$i++)
{
if($ext[$i] == 'Фильмы') unset($ext[$i]);
}
$arr[1] = "profil#".implode('*',$ext);
$content = implode("\r\n",$arr);
// Перезаписываем файл
$fd = fopen("$folder."/".$line","w");
fwrite($fd,$content);
fclose($fd);
unset($arr);
unset($ex);
unset($ext);
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(15.08.2005 в 19:59)
| | cheops'у очередное_грОмадное Спасибо! | |
|
|
|