Suivez les fils RSS
 
Auteur
ishmar
# 16 Mar 2010 - 14:58:37
Citer
25 Posts
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)

^
Dsls
# 16 Mar 2010 - 16:03:04
Citer
9 Posts
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) ;


^
Patidou
# 16 Mar 2010 - 16:10:28
Citer
2173 Posts
Tiens, un Dsls... cligne

Avertissement : il est inutile de m'envoyer des mp pour demander de répondre à vos sujets sur le forum. Je répond si j'ai un élément de réponse et si j'ai le temps. Merci d'avance.

http://www.lombre.net/ 
^
ishmar
# 16 Mar 2010 - 16:26:41
Citer
25 Posts
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

^
Heyoan
# 16 Mar 2010 - 17:09:05
Citer
Modérateur
8101 Posts
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)

^
ishmar
# 16 Mar 2010 - 17:17:47
Citer
25 Posts
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>

^
Heyoan
# 16 Mar 2010 - 17:59:44
Citer
Modérateur
8101 Posts
$content = preg_replace('/<div[^>]*>.*?<\/div>/s', '[balise_div]', $content);


^
ishmar
# 16 Mar 2010 - 18:17:51
Citer
25 Posts
ça marche !!!!
merci Heyoan, t'es mon sauveur 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 smile

merci encore !!

^
Heyoan
# 16 Mar 2010 - 18:22:39
Citer
Modérateur
8101 Posts
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. cligne
Modifié par Heyoan (16 Mar 2010 - 18:23)

^
ishmar
# 16 Mar 2010 - 20:43:35
Citer
25 Posts
merci ::)
je vais me soucier des quantificateurs paresseux maintenant smile

merci et bonne soirée

^