Modifier un fichier en PHP

chico95 -  
Alain_42 Messages postés 5413 Statut Membre -
Salut a tous,

J'ai un petit problème, voila, j'aimerais modifier le contenu d'un fichier sans réécrire par dessus, je pose mon code et je vous explique mon problème :

<?php      

$liste_modif="";  
   
$ouvre=fopen("test.txt","r");  // ouverture du fichier  

while (!feof ($ouvre)){        // tant que pas en fin de fichier  

          $lecture = fgets($ouvre, 4096); // stockage dans $lecture  
          $donnee=explode(";",$lecture);  // parsing des données basé sur ";")  

          // modification des données  
          $1=preg_match("#[0-9]+#",$donnee[0]);  
          if ($1){  
                    $donnee[0]=str_replace($1,$1+3,$donnee[0]);  
          }
  
          // stockage temporaire des données toujours avec le séparateur  
          $liste_modif.=$donnee[0].";\r\n";  
}  

fclose($ouvre);   // fermeture  

$ouvre=fopen("test.txt","w+");  
fwrite($ouvre,$liste_modif);  
fclose($ouvre);  

?> 


Mon problème c'est la partie en gras qui ne marche pas, voila l'algo que je n'arrive pas a réaliser :

Si il y a un nombre dans $donnee[0] Alors  
          on ajoute +3 à ce nombre  
FinSi 


Merci

3 réponses

  1. chico95
     
    j'ai deja trouvé la moitié pour ceux que sa intéresse :

    J'ai remplacé preg_match par preg_match_all...
    "NoOffFirstLineMenus=" est juste le début de mon texte a modifier :

    if (preg_match_all("#(NoOffFirstLineMenus=)([0-9]+)$#",$donnee[0],$tableau)){
    					$donnee[0]=str_replace($tableau[2],$tableau[2]+3,$donnee[0]);
    }


    par contre je n'arrive toujours pas a rajouter +3 à ce nombre, des idées ??

    merci
    0
  2. Alain_42 Messages postés 5413 Statut Membre 904
     
    tiens ça marche comme çela:

    <?php
    $donnee[0]='bla blabblallal210reblalalalal321bla blabblallal 630 reblalalalal';
    $masque='#[0-9]+#';
    preg_match_all($masque,$donnee[0],$tableau,PREG_PATTERN_ORDER);
    //visu
    echo '<pre>';
    print_r($tableau);
    echo '</pre>';
    
    for($i=0;$i<sizeof($tableau[0]);$i++){
    	$valeur=$tableau[0][$i];
    	$valeur_remplacement=$tableau[0][$i]+3;
    	$donnee[0]=preg_replace("/$valeur/","$valeur_remplacement",$donnee[0]);
    	
    }
    echo $donnee[0];
    ?>
    0