[Regex] Remplacer des mots qui se trouvent entre un tag HTML [Résolu]

Signaler
Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
-
Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
-
Salut à tous,


Je suis bloqué sur une expression régulière que je n'arrive pas à
trouver. Et pourtant je cherche depuis pas mal de temps. J'ai développé
un système de gestion d'acronymes, abréviations et définitions de mots
qui doivent être remplacés automatiquement par leur équivalence dans un
contenu HTML. Globalement, je transforme l'acronyme "HTML" en
'[lien bla bla le_mot bla bla]


Mais pas si 'le_mot' se trouve dans un attribut d'un tag HTML.


Voici le motif que j'ai réalisé jusqu'à maintenant mais qui ne marche pas :(

<tt style="font-size: 9pt;"><?php

$sLaChaine = 'Il faut [# remplacer le_mot] dans cette chaine HTML 

mais ne pas remplacer le_mot quand il 

se trouve dans un attribut d\'un tag HTML';

$sAcronym = 'le_mot';

$sDefinition= 'Définition de mon mot';

$texte = preg_replace('`(<[a-z]+[^>]*>)?(\b'.$sAcronym.'\b)(</[a-z]+[^>]*>)?`si',''. $sAcronym .'', $sLaChaine);

?>

</tt>
Je vous remercie de votre aide.


Hugo.

2 réponses

Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
4
Bonjour,

Merci pour cette réponse mais finalement j'ai eu ma réponse sur les forums de PHPScripts-fr. J'ai écrit un tutoriel sur mon site pour présenter la réponse.

Hugo HAMON
LP Développeur d'Applications Multimédia Multisupports - Ecole Gobelins - Annecy
-------
http://www.apprendre-php.com[apprendre à program
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
Salut,

Il est tard mais voici une piste:

<?php

$sAcronym = 'le_mot';
$sDefinition= 'Définition de mon mot';
$sText = 'Il faut [# remplacer le_mot] dans cette chaine HTML
mais ne pas remplacer le_mot quand il
se trouve dans un attribut d\'un tag HTML';

echo preg_replace('#(>.*?)('.$sAcronym.')(.*?<)#','$1$2$3', $sText);

?>