我有以下情况。
每次加载页面我都会创建一个文件。现在我的文件里面有两个标签。 {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}
答案 0 :(得分:1)
我很少使用随机访问文件操作,但喜欢将它全部读作文本并写回来,所以我可能在这里错了。但是,正如我所看到的,您读取了第一行(因此指针位于第二行的开头)。然后你将'{theme}green{/theme}
'写入该文件,以便它替换下一个位置文本(第二行)。
在这种情况下(因为您的数据很小),您最好获取保留文件。将其更改为字符串并将其写回。