2009-10-05 74 views
0

我有以下情況。替換文本文件中的文本的問題

每當我的頁面加載我創建一個文件。現在我的文件內有兩個標籤。 {主題} {/主題}和{佈局} {/佈局},現在每次我選擇特定佈局或主題時,都應該使用{layout}佈局{/ layout}和{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

我很少使用隨機訪問文件操作,但喜歡將它全部讀爲文本並寫回,所以我可能在這裏寫錯了。但正如我所看到的,你讀了第一行(所以指針在第二行的開頭)。然後,您將'{theme}green{/theme}'寫入該文件,以替換下一個位置文本(第二行)。

在這種情況下(因爲你的數據很小),你最好拿到保存文件。將其更改爲字符串並將其寫回。