preg_replace

CuriousStudent
Invité n'ayant pas de compte PHPfrance

25 juil. 2019, 11:56

Bonjour,
j'essaye de de réaliser un petit script qui me permet de colorier une balise html cependant je coince...

$texte = preg_replace('#</[a-z]+>#isU','<p><font color="blue">$0</font></p>', $texte);

ce code ne donne rien, et je ne comprend vraiment pas pourquoi .. Merci d'avance pour votre aide précieuse

Avatar du membre
Mammouth du PHP | 1609 Messages

25 juil. 2019, 12:02

Bonjour, ce code est quand même sensé faire un remplacement sur les balises fermantes genre </a>, </p>, </i>, </span>, etc
Encore faut-il que le html dans $texte contienne du html brut et non du html transformé comme avec les fonctions htmlspecialchars ou htmlentities.
Développeur web depuis + de 20 ans

CuriousStudent
Invité n'ayant pas de compte PHPfrance

25 juil. 2019, 12:16

Re, merci pour ta réponse !

Justement ce texte est bien transformé avec htmlspécialchar
sinon il apparait même pas en fait ..

Avatar du membre
Mammouth du PHP | 1609 Messages

25 juil. 2019, 12:29

Et oui tout à fait.
Avec le html modifié il faut que tu remplaces dans tes regex < par &lt; et > par &gt;
Les " sont également remplacés par &quote;

Après tu pourrais aussi t'amuser lors des preg_replace, en travaillant sur un html non modifié, à baliser avec des balises personnelles genre {blue}$0{/blue} et remplacer ces balises personnelles par des vraies balises html une fois le traitement terminé (sans oublier au préalable de passer un htmlentities une fois toutes tes balises personnelles posées).
Développeur web depuis + de 20 ans

CuriousStudent
Invité n'ayant pas de compte PHPfrance

25 juil. 2019, 13:02

Franchement un grand merci.
Vous êtes vraiment géniaux sur ce forum !