8796 sujets

Développement web côté serveur, CMS

Salut tout le monde,

je debute en regex, et j'ai quelques difficultés à utiliser le preg_replace..
voici mon probleme :

je voudrais remplacer une chaine comme '<div style... </div>' par une balise 'balise_div'

j'utilise la fonction suivante :
$content = preg_replace("#^(<div[.]+</div>)$#", "balise_div", $content) ;

je veux donc remplacer le contenu de la 1e parenthese par 'balise_div',
mais ça ne marche pas du tout..
désolé, ce sont mes débuts, si vous pouviez m'aider, ce serait trop cool

merci à tous !!
Modifié par ishmar (16 Mar 2010 - 18:45)
ishmar a écrit :

$content = preg_replace("#^(<div[.]+</div>)$#", "balise_div", $content) ;


En enlevant les marqueurs début/fin et en activant le multiligne, ça résoudra peut-être le problème :

$content = preg_replace("#(<div[.]+</div>)#m", "balise_div", $content) ;
yep, ça marche mais pas completement en fait..
mon souçi c ke g plusieurs balises de type <div style... </div> dans mon texte, sachant ke c tjs la mm chaine, genre ceci :

page 1sdfjhghdfkjgh dfkgh dfklgh dfkg hdfkl fgjkl hdfkgjh dfgjkgkl fin page 1<div style... </div>
page 2sdfjhghdfkjgh dfkgh dfklgh dfkg hdfkl fgjkl hdfkgjh dfgjkgkl fin page 2<div style... </div>
page 3sdfjhghdfkjgh dfkgh dfklgh dfkg hdfkl fgjkl hdfkgjh dfgjkgkl fin page 3<div style... </div>
, en fait, cpour pouvoir decouper un article en plusieurs, la balise <div style... </div> est insérée par le tag pagebreak de fckeditor.

et le pb, c ke lorske j'utilise le preg_replace, ça me vire la 2 page, ça prend le '<div' de la 1e page, et le </div> de la 3e page, et donc exit la 2e page.

comment je peux faire pour virer toutes les instances de chk <div style... </div>, et pas le texte ki se trouve entre ?

merci
Salut,

tu as un exemple dans ce post.

Sinon, merci de faire un effort sur l'orthographe et la lisibilité de tes messages car comme tu le sais, la vocation de ce forum est d'être accessible à tous... même aux personnes qui suivent ton sujet à l'aide d'une synthèse vocale.


Edit: pour ce qui est de ta seconde question il faudrait regarder du côté des quantificateurs paresseux (ou de l'option U)
Modifié par Heyoan (16 Mar 2010 - 17:12)
ok merci !
et désolé pour l'orthographe, je vais faire un effort, promis !

la fonction du post que tu me proposes ne marche pas chez moi parce qu'elle supprime en fait tout ce qui se trouve entre la balise ouvrante et la balise fermante.

si j'ai plusieurs :
<style type="text/css">
machin truc
</style>
mon texte a conserver
<style type="text/css">
machin truc 2
</style>

le preg_replace prend le <style type="text/css"> du 1er bloc et le </style> du dernier bloc, et va donc me supprimer 'mon texte a conserver'.
c la le souçi ..


</style>
ça marche !!!!
merci Heyoan, t'es mon sauveur Smiley ravi

par contre tu peux m'expliquer le .*?, et le s dans ta chaine '/<div[^>]*>.*?<\/div>/s', stp ?
la, je suis largué, t trop fort Smiley smile

merci encore !!
Le ? permet d'utiliser un quantificateur paresseux (cf. le lien que je t'ai donné plus haut) et le s permet de ne pas se soucier des sauts de lignes (\n) contenus dans la variable.

Si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. Smiley cligne
Modifié par Heyoan (16 Mar 2010 - 18:23)
merci ::)
je vais me soucier des quantificateurs paresseux maintenant Smiley smile

merci et bonne soirée