[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[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: