Foros del Web » Programando para Internet » PHP »

html a BBCode?

Estas en el tema de html a BBCode? en el foro de PHP en Foros del Web. Buenas, tengo una pregunta sobre bbcodes: Con un amigo estoy programando un foro desde 0, ya casi esta terminado, pero hay un problema, tengo un ...
  #1 (permalink)  
Antiguo 31/05/2009, 17:10
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 10 meses
Puntos: 6
Pregunta html a BBCode?

Buenas, tengo una pregunta sobre bbcodes:
Con un amigo estoy programando un foro desde 0, ya casi esta terminado, pero hay un problema, tengo un editor bbcode hecho por mi y un poquitin de ayuda de este foro :-p que reemplaza perfectamente el bbcode a html, hasta ahi todo bien. Ahora el problema es cuando alguien quiere editar un post, como paso el html a bbcode? estuve probando mucho y si uso preg replace me tira error, este es el codigo que tengo para pasar de bbcode a html, les agradeceria mucho su ayuda

Código PHP:
function bbcode($texto)
{
$texto htmlentities($texto);
$inicio = array(
      
"/\[i\](.*?)\[\/i\]/is",
      
"/\[b\](.*?)\[\/b\]/is",
      
"/\[u\](.*?)\[\/u\]/is",
      
"/\[img\](.*?)\[\/img\]/is",
      
"/\[url=(.*?)\](.*?)\[\/url\]/is",
      
"/\[php\](.*?)\[\/php\]/is",
      
"/\[js\](.*?)\[\/js\]/is",
      
"/\[css\](.*?)\[\/css\]/is",
      
"/\[html\](.*?)\[\/html\]/is",
      
"/\[cita\](.*?)\[\/cita\]/is",
      
"/\[izq\](.*?)\[\/izq\]/is",
      
"/\[der\](.*?)\[\/der\]/is",
      
"/\[cen\](.*?)\[\/cen\]/is",
      
"/\[justify\](.*?)\[\/justify\]/is",
      
"/\[Tahoma\](.*?)\[\/Tahoma\]/is",
      
"/\[Arial\](.*?)\[\/Arial\]/is",
      
"/\[Verdana\](.*?)\[\/Verdana\]/is",
      
"/\[Segoe UI\](.*?)\[\/Segoe UI\]/is",
      
"/\[Comic Sans MS\](.*?)\[\/Comic Sans MS\]/is",
      
"/\[Helvetica\](.*?)\[\/Helvetica\]/is",
      
"/\[Lucida Console\](.*?)\[\/Lucida Console\]/is",
      
"/\[Franklin Gothic Medium\](.*?)\[\/Franklin Gothic Medium\]/is",
      
"/\[9px\](.*?)\[\/9px\]/is",
      
"/\[10px\](.*?)\[\/10px\]/is",
      
"/\[12px\](.*?)\[\/12px\]/is",
      
"/\[14px\](.*?)\[\/14px\]/is",
      
"/\[16px\](.*?)\[\/16px\]/is",
      
"/\[18px\](.*?)\[\/18px\]/is",
      
"/\[24px\](.*?)\[\/24px\]/is"
   
);
$final = array(
      
"<i>$1</i>",
      
"<b>$1</b>",
      
"<u>$1</u>",
      
"<img src='$1' />",
      
"<a href='$1' target='_blank'>$2</a>",
      
"<fieldset class='php'><legend>Codigo PHP: </legend>$1</fieldset>",
      
"<fieldset class='js'><legend>Codigo JavaScript: </legend>$1</fieldset>",
      
"<fieldset class='css'><legend>Codigo CSS: </legend>$1</fieldset>",
      
"<fieldset class='html'><legend>Codigo HTML: </legend>$1</fieldset>",
      
"<fieldset class='cita'><legend>Cita: </legend>$1</fieldset>",
      
"<div align='left'>$1</div>",
      
"<div align='right'>$1</div>",
      
"<div align='center'>$1</div>",
      
"<div align='justify'>$1</div>",
      
"<font face='Tahoma'>$1</font>",
      
"<font face='Arial'>$1</font>",
      
"<font face='Verdana'>$1</font>",
      
"<font face='Segoe UI'>$1</font>",
      
"<font face='Comic Sans MS'>$1</font>",
      
"<font face='Helvetica'>$1</font>",
      
"<font face='Lucida Console'>$1</font>",
      
"<font face='Franklin Gothic Medium'>$1</font>",
      
"<span style='font-size:9px'>$1</span>",
      
"<span style='font-size:10px'>$1</span>",
      
"<span style='font-size:12px'>$1</span>",
      
"<span style='font-size:14px'>$1</span>",
      
"<span style='font-size:16px'>$1</span>",
      
"<span style='font-size:18px'>$1</span>",
      
"<span style='font-size:24px'>$1</span>"
   
);
$caritas = array(
      
" :) ",
      
" (H) ",
      
" ;) ",
      
" :( ",
      
" :@ ",
      
" :D ",
      
" :P ",
      
" (P) ",
      
" :_( ",
      
")",
      
"("
      
);
$caritas2 = array(
      
" <img src='editor/imagenes/feliz.gif'> ",
      
" <img src='editor/imagenes/cool.gif'> ",
      
" <img src='editor/imagenes/;).gif'> ",
      
" <img src='editor/imagenes/trizte.gif'> ",
      
" <img src='editor/imagenes/enojado.gif'> ",
      
" <img src='editor/imagenes/verde.gif'> ",
      
" <img src='editor/imagenes/P.gif'> ",
      
" <img src='editor/imagenes/mmm.gif'> ",
      
" <img src='editor/imagenes/lloron.gif'> ",
      
")",
      
"("
      
);
      
$texto str_replace($caritas$caritas2$texto);
$texto preg_replace($inicio$final$texto);
// YouTube
$texto preg_replace("/\[YouTube\]http:\/\/www.youtube.com\/watch?v=(.*?)\[\/YouTube\]/is","<object width='400' height='300'><param name='movie' value='http://www.youtube.com/v/$1&hl=es&fs=1'></param><param name='allowFullScreen' value='true'></param><param name='allowscriptaccess' value='always'></param><embed src='http://www.youtube.com/v/$1&hl=es&fs=1' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='400' height='300'></embed></object>"$texto);
$texto preg_replace("/\[YouTube\]http:\/\/youtube.com\/watch?v=(.*?)\[\/YouTube\]/is","<object width='400' height='300'><param name='movie' value='http://www.youtube.com/v/$1&hl=es&fs=1'></param><param name='allowFullScreen' value='true'></param><param name='allowscriptaccess' value='always'></param><embed src='http://www.youtube.com/v/$1&hl=es&fs=1' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='400' height='300'></embed></object>"$texto);
$texto preg_replace("/\[YouTube\]www.youtube.com\/watch?v=(.*?)\[\/YouTube\]/is","<object width='400' height='300'><param name='movie' value='http://www.youtube.com/v/$1&hl=es&fs=1'></param><param name='allowFullScreen' value='true'></param><param name='allowscriptaccess' value='always'></param><embed src='http://www.youtube.com/v/$1&hl=es&fs=1' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='400' height='300'></embed></object>"$texto);
$texto nl2br($texto);
return 
$texto;

  #2 (permalink)  
Antiguo 31/05/2009, 17:22
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 20 años, 4 meses
Puntos: 76
Respuesta: html a BBCode?

Si no me equivoco, lo que pretendes es traducir el BBcode a HTML antes de meterlo en la base de datos, y después traducir el HTML de nuevo a BBcode cuando alguien quiera editar o citar un mensaje. Te sugiero que cambies el planteamiento: no traduzcas el BBcode al meterlo en la base de datos, guárdalo tal cual, y tradúcelo a HTML cuando vayas a mostrarlo en la web. De esta manera, te ahorras el tener que hacer la conversión de HTML a BBcode cuando alguien le dé al botón de editar o citar: simplemente, le muestras el contenido de la base de datos "en plano".
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #3 (permalink)  
Antiguo 31/05/2009, 17:34
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: html a BBCode?

Claro porque no se me ocurrio antes? xD
Bueno probare como tu dices y te digo que tal me fue, muchas gracias por tu ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:45.