2009-10-05 6 views
0

J'ai la configuration suivante.Problèmes de remplacement de texte dans un fichier texte

Chaque fois que ma page se charge, je crée un fichier. Maintenant, mon fichier contient deux balises. {theme} {/ theme} et {layout} {/ layout}, maintenant chaque fois que je choisis une mise en page ou un thème, il faut remplacer les tags par {layout} layout {/ layout} et {theme} theme {/ theme}

Mon problème est que, après je lance le code suivant

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); 
     } 
} 

Ma sortie se présente comme suit

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

Et il doit ressembler à ceci

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

Répondre

1

J'utilise rarement l'utilisation de fichiers à accès aléatoire, mais j'aime lire tout cela sous forme de texte et écrire ti de retour afin que je puisse me tromper ici. MAIS comme je peux le voir, vous lisez la première ligne (donc le pointeur se trouve au début de la deuxième ligne). Ensuite, vous écrivez '{theme}green{/theme}' dans ce fichier afin qu'il remplace le texte de la position suivante (la deuxième ligne).

Dans ce cas (car vos données sont petites), il est préférable d'obtenir le fichier de mise en attente. Changez-le en tant que chaîne et écrivez-le.

Questions connexes