Expression régulière remplacer des mots entres deux balises.

Fermé
Shawlong - Modifié par Shawlong le 8/07/2014 à 05:54
 Utilisateur anonyme - 8 juil. 2014 à 08:37
Bonjour à tous. J'ai besoin de votre aide pour une expression régulière.


J'ai sur mon site (en construction non en ligne) la possibilité d'ajouter des pages de textes.

J'aimerais pouvoir changer la couleur de certains mots qui sont uniquement contenue entre deux balises
<Pre>
(utiliser pour garder la tabulation) , donc même si les mots ce retrouve ailleurs dans le texte, ils ne seront pas visés par le changement de couleur.

Puisque les textes sont variables, il est possibles que les mots visées ce retrouve (toujours dans la balise
<Pre>
) au début, à la fin , qu'il en est plusieurs après ou avant du texte ou même qu'il n'y a pas.

J'ai essayé ce code

 $texte = preg_replace('#<Pre>(.*)Mots_a_colorer(.*)</Pre>#isU ' , <Pre>$1<span style='color: red;>Mots_a_colorer</span></pre>' , $texte_avant_modification) 

En faite le code fonctionne, mais seulement pour le premier mots_a_colorer trouver dans la balise
<Pre>
, s'il y a d'autre mots, ils sont simplement ignorés et ils n'ont pas de balise
span
pour les mettrent en couleurs.

Donc je sais que c'est mon expression régulière qui est mal écrite, mais je n'arrive pas à trouver la solution pour visée tout les autres mots_a_colorer qui reste.

Merci beaucoup.
A voir également:

1 réponse

Utilisateur anonyme
8 juil. 2014 à 08:37
Voilà une solution bien fonctionnelle.

$w = '<pre>Je pense, donc je suis!</pre>';

// Les mots à colorer, sous: /\b($mots_a_colorer)\b/i
// Les i permettent d'être insensible à la casse,
$c = array('/\b(je)\b/i', '/\b(donc)\b/i');

$w = preg_replace($c, '<span style="color:red;">$1</span>', $w);
echo $w;


Si tu as besoin d'aide supplémentaire, n'hésite pas.

@ plus,
0