Remplacer une ligne de longueur différente

Lisbeth
Invité n'ayant pas de compte PHPfrance

30 juil. 2012, 13:03

Bonjour à tous,

J'ai crée une fonction qui permet d'écrire de remplacer des lignes dans un fichier. Seul problème une de mes lignes à remplacer concerne un e-mail et n'aura donc pas toujours la même taille...Comment le gérer?

Voici un sample :

Code : Tout sélectionner

function confIntForm($chemin,$ligne,$old,$newValue){ $this->chemin=$chemin; $fp=fopen(addslashes($chemin),"r+"); if(!$fp = fopen(addslashes($chemin),"r+")) { echo "Echec de l'ouverture du fichier"; } else{ $i = 1; while (!feof($fp)&&$i<$ligne -1) { $page .= fgets($fp); $i ++; } fputs($fp,$old.$newValue); fclose($fp); } }
Par avance, merci !

ViPHP
xTG
ViPHP | 7331 Messages

30 juil. 2012, 13:49

Regardes plutôt du côté de file().
Cela te renvoie un tableau avec un index pour chaque ligne.

Lisbeth
Invité n'ayant pas de compte PHPfrance

30 juil. 2012, 14:03

Merci !

Pourrais-tu juste me donner une exemple pour remplacer la ligne avec file () une fois l'index récupéré?

ViPHP
xTG
ViPHP | 7331 Messages

30 juil. 2012, 17:48

function confIntForm($chemin,$ligne,$old,$newValue){
  $tab = file($chemin);
  foreach($tab as $index => $valeur){
    if( $index == $ligne ){
      $tab[$index] = $newValue;
      break;
    }
  }
  file_put_contents(implode("\r\n",$tab));
}
;)