Afficher un message
Vieux 02/10/2007, 11h15   #7
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Circonscrire un eregi_replace ?

Le 02/10/2007 09:35, paul a écrit :
>
> Ben je n'interdis pas de faire des recherches sur plusieurs mots et
> éventuellement avec de la ponctuation... ça semble bien fonctionner
> d'ailleurs...


Donc, tu autorises aussi les recherches sur « link rel="stylesheet" »,
sur « meta http-equiv » et ainsi de suite ? Dans ce cas je ne vois pas
pourquoi le contenu des attributs href serait le seul à protéger.

>> Une autre méthode consisterait à rechercher toutes les chaînes comprises
>> entre « > » et « < » et à effectuer le remplacement que tu souhaites
>> dans chacune de ces chaînes. Par exemple :
>> function ma_fonction($matches) {
>> return preg_replace("/$quoi/", "<span class='highlight'>$0</span>",
>> $matches[0]);
>> }
>> $contenu = preg_replace_callback("/>.*</sU", "ma_fonction", $contenu);

>
> Pas mal vu, sauf qu'il n'y a malheureusement pas forcément de lien dans
> le contenu !...


Je ne comprends pas ta remarque. Il n'y aura *jamais* de lien dans le
contenu, en tout cas jamais de balises <a> ou </a>, et justement il me
semble que c'est ce que tu cherches : modifier le contenu pour mettre
certains mots en évidence, mais ne surtout pas toucher aux balises HTML,
dont les liens.

> C'est pour ça que je disais que s'il y a un ou des liens il faudrait ne
> pas intervenir avec le eregi_replace entre les <a href et le > suivant.


Si tu ne prends que ce qui se trouve entre un > fermant et le < ouvrant
qui suit, ça ne changera pas ce qui se trouve entre un < ouvrant et le >
fermant correspondant. Bien sûr, il faudrait peut-être affiner si jamais
tu t'autorisais à mettre dans le contenu des « > » non encodés en
« &gt; », mais j'ai supposé que ce n'était pas le cas.
  Réponse avec citation
 
Page generated in 0,05301 seconds with 9 queries