Blog
Hoy en día es muy común tener un editor BBCode en un sitio web, ya sea para un foro o no. En tutoriales anteriores aprendimos a insertar un editor BBCode en un sitio web, en este veremos cómo convertir BBCode en HTML con PHP para poder visualizarlo correctamente.
¿Cómo convertir BBCode en HTML con PHP?
Realizar esto no es tan complicado, podemos utilizar la función preg_replace que nos proporciona PHP para remplazar valores dentro de una cadena de caracteres:
function bbcodeToHTML($text) { // BBCode array $find = array( '~\[code\](.*?)\[/code\]~s', '/(?si)\\[list=\\d+\\](.*?)\\[\\/list\\]/', '/(?si)\\[list\\](.*?)\\[\\/list\\]/', '/(?si)\\[\\*\\](.*?)\\[\\/\\*\\]/', '~\[b\](.*?)\[/b\]~s', '~\[i\](.*?)\[/i\]~s', '~\[s\](.*?)\[/s\]~s', '~\[sup\](.*?)\[/sup\]~s', '~\[sub\](.*?)\[/sub\]~s', '~\[u\](.*?)\[/u\]~s', '~\[quote\](.*?)\[/quote\]~s', '~\[size=(.*?)\](.*?)\[/size\]~s', '~\[font=(.*?)\](.*?)\[/font\]~s', '~\[color=(.*?)\](.*?)\[/color\]~s', '~\[url=(.*?)\](.*?)\[/url\]~s', '~\ . (.*?)\[/video\]~s', '~\[img\](https?://.*?\.(?:jpg|jpeg|gif|png|bmp))\[/img\]~s', '~\[center\](.*?)\[/center\]~s', '~\[left\](.*?)\[/left\]~s', '~\[right\](.*?)\[/right\]~s' ); // Etiquetas HTML para remplazar el BBCode $replace = array( '<code>$1</code>', '<ol>$1</ol>', '<ul>$1</ul>', '<li>$1</li>', '<b>$1</b>', '<i>$1</i>', '<s>$1</s>', '<sup>$1</sup>', '<sub>$1</sub>', '<span style="text-decoration:underline;">$1</span>', '<pre>$1</' . 'pre>', '<font size="$1em">$2</font>', '<font face="$1">$2</font>', '<span style="color:$1;">$2</span>', '<a href="$1" target="_blank" rel="nofollow">$2</a>', '<iframe src="http://www.youtube.com/embed/$1" width="640" height="480" frameborder="0"></iframe>', '<img src="$1" alt="" style="max-width:740px"/>', '<p style="text-align:center;">$1</p>', '<p style="text-align:left;">$1</p>', '<p style="text-align:right;">$1</p>' ); // Remplazando el BBCode por las etiquetas HTML return nl2br(preg_replace($find, $replace, $text)); } /*Haciendo una prueba de la función*/ echo bbcodeToHTML('[b]Esto es una prueba[/b]');
Es importante ver que cada elemento del array $replace remplazará al elemento del mismo índice del $find sobre el texto pasado por parámetro. Si queremos agregar un nuevo BBCode a nuestra función solamente tenemos que incluir el código en el array $find y su HTML en el $replace (en el mismo índice).
Bueno gente, hemos llegado al final de este breve tutorial y como siempre digo ante cualquier problema no duden en dejar un comentario.