Bonjour bonjour!
Voilà mon problème: je souhaite remplacer, dans une chaîne de caractère, certains caractères, à condition que ceux-ci ne fassent pas partie d'une sous-chaîne.
Plus précisément, la chaîne de caractère est du code HTML. Je souhaite supprimer des caractères à conditions que ceux-ci ne se situent pas dans une balise (altérer le texte sans altérer les balises).
Exemple: supprimer tous les "i" de la chaîne de caractère, sauf ceux qui sont dans une balise, les remplaçant par un espace
<div class="menu">introduction: les <u>intérêts généraux</u></div>
devrait devenir:
<div class="menu"> ntroduction: les <u> ntérêts généraux</u></div>
Je suis tombé sur la fonction preg_replace qui me semble appropriée, mais j'avoue sécher sur l'expression rationnelle correcte à utiliser.
avec
<[^>]*?> j'arrive à isoler les balises. Il devient alors, par exemple, facile de supprimer les balises et de n'afficher que le texte:
$page='<div class="menu">introduction: les <u>intérêts généraux</u></div>';
$pattern = "'>[^<]*'si";
echo preg_replace($pattern, " ", $page);
-> Affiche
introduction: les intérêts généraux
Mais j'aimerais isoler tous les "i" qui n'appartiennent pas aux balises... et afficher:
<div class="menu"> ntroduction: les <u> ntérêts généraux</u></div>
J'ai pas mal cherché (google) sans succès. Est-ce possible utilisant preg_replace (ce qui simplifierait beaucoup le problème, évitant des lignes de code pour arriver au même résultat)? Comment?
Si quelqu'un a une idée ou des pistes, je suis preneur! Merci beaucoup de m'avoir lu, et doublement merci si vous parvenez à m'aider à avancer!
