IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

remplacer sur un fichier une chaine précise ?


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de mamiberkof
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2005
    Messages : 290
    Points : 155
    Points
    155
    Par défaut remplacer sur un fichier une chaine précise ?
    Bonjour,

    Je veux remplacer certains chaines de caracetres dans un fichier html , par une chaine de carectere conctané avec un compteur .

    je m'explique:
    J'ai un fichier import.html qui contient du code HTML, au niveau de ce code j'ai plusieurs(600 tr)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tr> CHAINE </tr><tr> CHAINE </tr><tr> CHAINE </tr>....
    , je veux lire le fichier html et l'ecrire , en modifiant pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tr> CHAINE1 </tr><tr> CHAINE2 </tr><tr> CHAINE3 </tr><tr> CHAINE4 </tr>....<tr> CHAINE300 </tr>
    J'ai fais un script php comme cela ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php 
     
     
    $t_theFile = 'import.htm';
    $f = fopen($t_theFile, 'r');
    $content = fread($f, filesize($t_theFile));
     
    for ($i=1;$i<=300;$i++)
     
    	if(preg_match('`CHAINE`',$content))
    		$content=str_replace('CHAINE', "CHAINE".$i, $content) ;
     
     
    $fp=fopen("import.htm" ,"w") ;
    fwrite($fp, $content);
    fclose($fp)
     
     
    ?>
    mais ça marche pas , il me donne pas le résultat que je veux .


    Merci pour votre aide
    A+

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Je pense qu'il serait plus simple d'utiliser une fonction de rappel donc de compter sur la fonction preg_replace_callback pour effectuer le remplacement, ce qui pourrait vous donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $t_theFile = 'import.htm';
     
    function my_rep_cb($m) {
        static $i = 1;
        return $m[0] . $i++;
    }
     
    file_put_contents($t_theFile, preg_replace_callback('~\bCHAINE\b~', 'my_rep_cb', file_get_contents($t_theFile)));
    (non testé)

    L'expression régulière pouvant être plus spécialisée.

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 17h40
  2. Réponses: 4
    Dernier message: 29/08/2006, 18h44
  3. [C#]Remplacer 1ère occurence d'une chaine dans une autre!
    Par Bils dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/04/2006, 13h57
  4. [langage] remplacer les caractères d'une chaine
    Par perlaud dans le forum Langage
    Réponses: 14
    Dernier message: 12/05/2004, 12h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo