Bonjour,
Je suis confronté à un petit soucis bloquant. J'effectue actuellement la migration d'un site dont le contenu était formaté via du bbcode. Ce bbcode était assez pratique parce qu'il permettait d'imbriquer plusieurs balises pour des formatages plus précis.
Cette migration est effectuée sur un blog Wordpress. Mon soucis est de convertir le bbcode ver le html. Au niveau des balises classiques je m'en sort à peu près. Mais c'est au niveau des balises imbriqués qu'utilise l'ancien site où je m'y perds un peu.
des exemples :
j'utilise un script PHP assez général pour pouvoir être complété par d'autres conversions si besoin.
Ça, ça fonctionne bien. Voila où se trouve mon soucis : si par exemple j'impose la taille d'une image :pour convertir la balise gras ( [b] ) j'utilise les regex suivant : BBCODE : '#\[b\](.*)\[/b\]#Usi' (ex : [ b ] texte [ /b ] ) HTML : '<strong>$1</strong>' pour un lien hypertexte : BBCODE : '#\[url=(.*)\](.*)\[/url\]#Usi' (ex : [ url = http://adresse.com ] texte [ /url ] ) HTML : '<a href="$1">$2</a>' pour une image : BBCODE : '#\[img\](.*)\[/img\]#Usi' (ex: [ img ] http://bla.com/image.jpg [ /url ] ) HTML : '<img src="$1" alt="Image" />'
ce qui donnerait en HTML :[ img = 400x506 ] http://bla.org/image.jpg [ /img ]
Ou encore une image contenant un lien :Code:<img width="400" height="506" src="http://bla.org/image.jpg" alt="" />
ce qui donnerait en HTML :[ url = http://bla.com ] [ img ]/image.jpg[ /img ] [ /url ]
Code:<a href="http://bla.com" onclick="window.open(this.href); return false;"><img style="border: 0;" src="/images.jpg" alt="image" />
N'étant absolument pas familier du regex je ne vois pas comment imbriquer cela. Auriez vous des idées ?
Voici une partie du code PHP du script :
Merci a vous ! :zoubi:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 $entree = array( '#\[b\](.*)\[/b\]#Usi', '#\[i\](.*)\[/i\]#Usi', '#\[u\](.*)\[/u\]#Usi', '#\[s\](.*)\[/s\]#Usi', '#\[img\](.*)\[/img\]#Usi', '#\[img=(.*)\](.*)\[/img\]#Usi', '#\[url\](.*)\[/url\]#Usi', '#\[url=(.*)\](.*)\[/url\]#Usi', '#\[left\](.*)\[/left\]#Usi', '#\[center\](.*)\[/center\]#Usi', '#\[right\](.*)\[/right\]#Usi' ); $sortie = array( '<strong>$1</strong>', '<em>$1</em>', '<span style="text-decoration:underline;">$1</span>', '<span style="text-decoration:line-through;">$1</span>', '<img src="$1" alt="Image" />', '<a href="$1">$1</a>', '<a href="$1">$2</a>', '<div style="text-align:left;">$1</div>', '<div style="text-align:center;">$1</div>', '<div style="text-align:right;">$1</div>'