替换文本文件中的文本的问题

时间:2009-10-05 11:51:37

标签: php

我有以下情况。

每次加载页面我都会创建一个文件。现在我的文件里面有两个标签。 {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 个答案:

答案 0 :(得分:1)

我很少使用随机访问文件操作,但喜欢将它全部读作文本并写回来,所以我可能在这里错了。但是,正如我所看到的,您读取了第一行(因此指针位于第二行的开头)。然后你将'{theme}green{/theme}'写入该文件,以便它替换下一个位置文本(第二行)。

在这种情况下(因为您的数据很小),您最好获取保留文件。将其更改为字符串并将其写回。