[PHP] Exp rég pour remplacer du texte

Cobr@ Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Darshu Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   -
Salut,

je cherche comment remplacer une partie de code html situé entre deux tags par une autre.

Exemple : entre les balises <div> et </div>, tout remplacer par Mon texte
<div>
blabla
blabla
</div>

donnerait

<div>
Mon texte
</div>


Merci d'avance ;)
A voir également:

3 réponses

Darshu Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   64
 
Salut.

Pour ce faire, tu as la fonction preg_match_all() de PHP qui permet de chercher des expressions régulières, mais il faut que ce soit dans une variable.

Dans ton cas, ça donnerait :
preg_match_all("/<div>(.*)</div>/",$variable,$matches, PREG_SET_ORDER);
foreach ($matches as $message)
{
   echo "Partie 0 : ",$message[0],"<BR>";
   echo "Partie 1 : ",$message[1],"<BR>";
   echo "Partie 2 : ",$message[2],"<BR>";
}


Il te ne reste plus (sur la bonne partie bien entendu, de faire str_replace("chaêne à remplacer","chaîne de remplacement","chaîne dans laquelle faire le remplacement"); A noter que dans le preg_match_all j'ai utilisé $variable, qui doit être ton texte qui contient les <div> et dans lequel tu veux remplacer le texte intermédiaire.

Bon courage.
1
Cobr@ Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse.

Mais le problème ici, c'est qu'apparement, on ne peut changer que du texte connu à l'avance et c'est pas vraiement ça que je veux.

J'vais essayer de trouver sur google.

A+
0
Darshu Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   64
 
Dans quel sens du texte connu àç l'avance ? Ce que je t'ai filé va t'afficher TOUS les textes compris entre <div> et </div>, mais c'est sur qu'il faut savoir où se trouve les <div> à remplacer ....

Sinon une autre méthode, c'est d'ouvrir ta page comme un fichier (avec fopen), et, pour chaque ligne lue, de faire le preg_match_all ... Mais c'est lourd !
0