Проблемы с заменой текста в текстовом файле - PullRequest
0 голосов
/ 05 октября 2009

У меня есть следующий сценарий.

Каждый раз, когда загружается моя страница, я создаю файл. Теперь у моего файла есть два тега. {theme} {/ theme} и {layout} {/ layout}, теперь каждый раз, когда я выбираю определенный макет или тему, он должен заменять теги на {layout} layout {/ layout} и {theme} theme {/ theme}

Моя проблема в том, что после запуска следующего кода

if(!file_exists($_SESSION['file'])){
        $fh = fopen($_SESSION['file'],"w");
        fwrite($fh,"{theme}{/theme}\n");
        fwrite($fh,"{layout}{/layout}");
        fclose($fh);
    }

    $handle = fopen($_SESSION['file'],'r+');



if ($_REQUEST[theme]) {
        $theme = ($_REQUEST[theme]);
        //Replacing the theme bracket in the cache file for rememberence
        while($line=fgets($handle)){
            $line = preg_replace("/{theme}.*{\/theme}/","{theme}".$theme."{/theme}",$line);
            fwrite($handle, $line);
        }
}

Мой вывод выглядит следующим образом

{theme}{/theme}
{theme}green{/theme}

И это должно выглядеть так

{theme}green{/theme}
{layout}layout1{/layout}

1 Ответ

1 голос
/ 05 октября 2009

Я редко использую операцию с произвольным доступом к файлу, но мне нравится читать все это как текст и записывать обратно, поэтому я могу ошибаться здесь. НО, как я вижу, вы читаете первую строку (поэтому указатель находится в начале второй строки). Затем вы пишете '{theme}green{/theme}' в этот файл, чтобы он заменил текст следующей позиции (вторая строка).

В этом случае (поскольку ваши данные невелики), вам лучше получить файл удержания. Измените его как строку и напишите обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...