Page 1 sur 1

preg_replace_callback sauf entre 2 balises spécifiques.

Posté : 08 avr. 2012, 19:01
par Ehplod
Salut,

Je bloque sur une expression régulière utilisant preg_replace_callback.

J'ai une variable contenant un texte balisé en html.
Je souhaite faire une moulinette, via une fonction de mon cru, sur son contenu mais en évitant de le faire sur le contenu situé entre les balises div...

exemple :
<p>texte... blabla <a>lien</a></p>
<div>des trucs</div>
<p>retexte... re blabla... </p>
<div>encore des trucs... </div>
etc...
Merci de votre aide.

Re: preg_replace_callback sauf entre 2 balises spécifiques.

Posté : 08 avr. 2012, 20:24
par moogli
Salut,

Désolé mais ta question n'est pas claire, que veux tu exactement ?

Et qu'as tu fait jusqu'ici ?


@+

Re: preg_replace_callback sauf entre 2 balises spécifiques.

Posté : 08 avr. 2012, 21:28
par Ehplod
Salut,

Bah je ne vois pas où je ne suis pas clair...

Donc, je reprend autrement...

J'ai une variable contenant ceci :
$var = '<p>Bonjour, blabla...<a>lien</a> blabla <img /></p><div class="machin">du texte avec des balises p, a, autres...</div>';
J'ai une fonction qui modifie des caractères,et dont les < > subissent un htmlentities.
Je veux activer cette fonction sur $var, sans que les div soient affectées.

Genre :
preg_replace_callback('(TOUT) SAUF(<div class=".+">.*</div>)', 'maFonction', $var);
Voilà, je ne vois pas comment être plus clair. ;-)

Et pour le moment, j'ai rien à proposer aprce que tout ce que j'ai essayé... ne fonctionne pas.

Evidement, l'inverse, je sais faire...
preg_replace_callback('`<div class=".+">(.*)</div>`sU', ''maFonction', $var);
Cela active bien ma fonction uniquement sur les bloc div.

Re: preg_replace_callback sauf entre 2 balises spécifiques.

Posté : 11 avr. 2012, 14:26
par Ehplod
Bon, je me suis débrouillé autrement, mais c'est pas très propre...

Personne n'a une idée pour, via une regex, modifier tout ce qui ne se trouve pas entre 2 balises spécifiques ?

Re: preg_replace_callback sauf entre 2 balises spécifiques.

Posté : 12 avr. 2012, 00:27
par Calimero
Bon, je me suis débrouillé autrement, mais c'est pas très propre...

Personne n'a une idée pour, via une regex, modifier tout ce qui ne se trouve pas entre 2 balises spécifiques ?
En développement, quand on ne trouve pas comment faire quelquechose, c'est parfois qu'on a mal défini ce qu'on voulait faire. Question de mots, de terminologie, d'ordre dans les idées...

Dans ton cas ce n'est pas si dur : pose-toi dans un coin, bien relaxé, la tête froide, relis ton sujet et ta question, et demande-toi si tu peux exprimer la même idée, mais d'une manière différente (que, cette fois, tu sauras faire). Tu vas trouver ;)

En cas de grosse panne d'inspiration, voici une piste : http://fr2.php.net/manual/fr/ref.pcre.php ( as-tu envisagé chacune de ces fonctions pour ton besoin ) ?

Re: preg_replace_callback sauf entre 2 balises spécifiques.

Posté : 12 avr. 2012, 20:05
par Ehplod
Merci. ;-)

Preg_split pourrait m'aider...
J'éclate, je travaille la partie concerné et je recolles...