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 html : Sélectionner tout - Visualiser dans une fenêtre à part <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 html : Sélectionner tout - Visualiser dans une fenêtre à part <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 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>'
Partager