[HS PHP] Petite aide sur les expressions rationnelles
Salut,
Je suis en train de me battre depuis pas mal d'heures sur un script à
base de preg_replace, il y a un truc dont je n'arrive pas à trouver la
solution.
Donc, voilà. J'ai un texte en html :
<p>Un texte en html, donc, avec régulièrement des sauts de lignes<br />
que j'aimerais transformer en paragraphe, jusque là, pas trop de
problème<br /> par fois ces sauts de ligne se trouvent avant une
image<br/><img src="tata.toto"/><br /> auquel cas, je ne veux pas les
enlever, même chose pour ceux qui sont juste derrière. Il faut
imaginer<br /> qu'il peut y avoir des liens <a href="haha">un lien</a>
et d'autres balises.<br /> Et surtout, à un moment donné, le
paragraphe<br /> peut prendre fin et laisser place à autre chose.</p>
<ul><li>item 1</li></ul>.
L'idée est que je voudrais remplacer les <br /> qui ne sont pas juste
devant ou derrière une balise image par </p><p>. Mais pour ça, il faut
que je fasse gaffe, car je crous le risque d'ouvrir une balise <p> alors
qu'il n'y aura rien pour la fermer.
J'ai tenté pas mal de choses autour de
'#<p>(.*?)<br />?#' avec des assertions arrières, etc. Mais je n'arrive
pas à gérer tout. J'en suis arrivé à faire un truc où j'isole d'abord
les paragraphes (c'est-à-dire <p>...</p> ou </p> ne se répète pas), puis
je strip les <br /> à l'intérieur. Mais je n'arrive pas à trouver de
solution pour stopper la boucle while que j'ai autour de tout ça.
Une solution qui m'aiderait énormément serait de réussir à trouver
comment exclure une chaîne de caractère avec regexp, mais je n'ai pas
trouvé, et ce que j'ai lu porte à croire que ça n'est pas possible.
Typiquement, je pense que ça marcherait
'#<p>([^</p>]*?)<br />?(?!<img)' si on pouvait préciser que c'est la
chaîne complète "</p>" que j'exclue de l'expression.
Voilou voilou.
Merci d'avance et beaucoup
--
==============================
ORL (alias Yvette H.)
------------------------
Responsable internet de l'AMMD
Sebkha-Chott : http://sebkhachott.net
[Mekanik Metal Disco]
[Peplum Neo-Futuriste Burlesque - Spectacle musico-théatral comique]
Amicale du Mekanik Metal Disco : http://ammd.net
[Asso loi 1901 promouvant les musiques éclectiques via l'open-music]
L'Entremetteur : http://entremetteur.ammd.net
[Réseau indépendant de groupes en France]
Tél : 02 43 82 72 48
------------------------
__________________________________
/ Chiffrez et signez vos messages \
| Utilisez les clés GnuPG |
| |
| HOWTO : |
| http://vilya.org/gpg/gpg-intro.html |
\ __________________________________ /
==================================
Reply to: