[list]
[*]bla1
[*]bla2
[*]bla3
[*]bla4
[/list]
en
<ul><li>bla1</li>
<li>bla2</li>
<li>bla3</li>
<li>bla4</li></ul>
mais avec X bla, je sais pas comment faire....
jai commenc� � �crire �a:
'/\[list\] ([*](.*?))+ \[\/list\]/is'
peut �tre que cest pas possible, et quil faut remplacer [list][*]bla1
et [*]blax[*] et [*]dernierbla[/list] s�par�ment, ou un truc comme
�a...
merci beaucoup!
Le 01/07/2009 13:04, samuel a �crit :
>
> j'aimerais transformer
>
> [list]
> [*]bla1
> [*]bla2
> [*]bla3
> [*]bla4
> [/list]
>
> en
> <ul><li>bla1</li>
> <li>bla2</li>
> <li>bla3</li>
> <li>bla4</li></ul>
> mais avec X bla, je sais pas comment faire....
Pour ce genre de choses, l'id�al serait d'�crire d'abord un � parser �
qui lit le format d'origine et le stocke sous la forme d'un arbre, puis
il n'y a rien de plus simple que de g�n�rer le format de destination �
partir du format structur� interne. Mais bien s�r �a ne se fait pas �
coups de preg_replace().
> jai commenc� � �crire �a:
>
> '/\[list\] ([*](.*?))+ \[\/list\]/is'
Bon, mettons qu'on en reste aux preg_replace(). Il y a quand m�me deux
probl�mes.
Le premier est syntaxique :
/\[list]\s*(\[\*](.*?))+\s*\[\/list]/
Le second est que tu ne peux pas remplacer � la fois les [list] en <ul>
et les [*] en <li>, il faut le faire en plusieurs �tapes.
Voici une proposition.
1) [*]bla1 -> <li>bla1</li>
$str = preg_replace('/\[\*]([^[]*?)\s*\[/', "<li>$1</li>\n\t[", $str);
2) [list] <li>...</li> [/list] -> <ul><li>...</li></ul>
$str = preg_replace('|\[list]\s*(.*?)\s*\[/list]|i', '<ul>$1</ul>',
$str);
Attention, je n'ai rien test�, alors c'est sans garantie, d'autant que
j'ai essay� de respecter ton utilisation des blancs et des sauts de
ligne (ce qui complique).
Je fais suivre vers fr.comp.lang.regexp pour d'�ventuels compl�ments.
--
Olivier Miakinen