Foros del Web » Programando para Internet » PHP »

BBCode a HTML Buffer

Estas en el tema de BBCode a HTML Buffer en el foro de PHP en Foros del Web. Seguro que esto esta preguntado y respondido 300 veces, pero aunque halla buscado en el foro y visto temas similares, usan unas funciones que me ...
  #1 (permalink)  
Antiguo 03/06/2009, 17:19
 
Fecha de Ingreso: marzo-2009
Mensajes: 42
Antigüedad: 15 años, 1 mes
Puntos: 5
BBCode a HTML Buffer

Seguro que esto esta preguntado y respondido 300 veces, pero aunque halla buscado en el foro y visto temas similares, usan unas funciones que me cuesta comprender por no decir que no me entero de nada

Tengo textarea en el que voy insertando una noticia con tags en BBCode y la guardo en una tabla de una base de datos mysql. Hasta ahí bien.

Ahora para pasarla a HTML al mostrarla en la portada, puedo imprimir casi todos los BBCode en HTML con el siguiente código:

Y aquí imprimiria las noticias de la base de datos en BBCode, tal y como está en este ejemplo

EDITADO : Como no me deja postear porque supuestamente hay enlaces.. no se donde los ve pero bueno,.. dejo el texto del script en este url totalmente separado aver si me deja ponerlo T_T'''''''''

Este es:
sweetmonsters.uuuq.com/bbcodeahtml.txt

No tiene nada raro ni ningun enlace, solo xq pone http :// algun rato ya no me deja ponerlo T_T'

El problema está en que no tengo manera de recoger los links con lo que me es imposible trabajar... y menos con el del youtube que me tiene

En el array de BBCode me faltan los tags de img y url porque los e quitado previamente..

Alguna idea? Alguna solución mejor?
  #2 (permalink)  
Antiguo 04/06/2009, 08:40
 
Fecha de Ingreso: marzo-2009
Mensajes: 42
Antigüedad: 15 años, 1 mes
Puntos: 5
Respuesta: BBCode a HTML Buffer

A nadie se le ocurre alguna idea?

Yo habia pensado en que como obtengo los datos de la base de datos ya tengo alli las url guardadas.. pero no se me ocurre como separarlas y diferenciarlas, porque url puede tener el = en el url o no tenerlo, que lio
  #3 (permalink)  
Antiguo 04/06/2009, 12:53
 
Fecha de Ingreso: marzo-2009
Mensajes: 42
Antigüedad: 15 años, 1 mes
Puntos: 5
Pregunta Respuesta: BBCode a HTML Buffer

Siento ser el mismo pesado de antes xD

Buscando y buscando he encontrado un código que me sirve y funciona bien, pero me gustaría saber el porque es así, me gusta saber que es lo que hace cada pedazo de código de mi web.

Código PHP:
<?php
header
('Content-Type: text/html; charset=ISO-8859-1');

// Obtención de Datos de la Base de Datos
$texto_BD "
[b]Negrita[/b]
[i]Cursiva[/i]
[u]Subrayado[/u]
[s]Tachado[/s]
[center]Centrado[/center]
[code]Código[/code][list]
[li]Lista 1[/li]
[li]Lista 2[/li][/list][hr]
[size=20pt]Tamaño 20[/size]
[color=red]ROJO[/color]
[color=green]VERDE[/color]
[color=grey]GRIS[/color]
[color=purple]VIOLETA[/color]
[color=orange]NARANJA[/color]
[IMAGEN]URL IMAGEN[/IMAGEN] // IMAGEN es el BBCode IMG
[DIRECCION]WEB[/DIRECCION] // DIRECCION es el BBCode URL
[DIRECCION=WEB]TEXTO[/DIRECCION]
[youtube]VIDEO YOUTUBE[/youtube]
"
;


function 
BBcode($texto){
   
$texto htmlentities($texto);
   
$a = array(
      
"/\[i\](.*?)\[\/i\]/is",
      
"/\[b\](.*?)\[\/b\]/is",
      
"/\[u\](.*?)\[\/u\]/is",
      
"/\[img\](.*?)\[\/img\]/is",
      
"/\[DIRECCION=(.*?)\](.*?)\[\/DIRECCION\]/is"
   
);
   
$b = array(
      
"<i>$1</i>",
      
"<b>$1</b>",
      
"<u>$1</u>",
      
"<img src=\"$1\" />",

       
"<a href=\"$1\" target=\"_blank\">$2</a>"
   
);
   
$texto preg_replace($a$b$texto);
      
$texto nl2br($texto);
   return 
$texto;
};
?>
Código HTML:
<html>
<head>
<title>Mi Web muestra caritas</title>
</head>
<body bgcolor='#AAAAAA'>
<?php 
echo BBCode($texto_BD);
?>
</body>
</html> 
Pues es que no se para que sirven tantas /\ en el array, ni el $1, $2, etc, ni (.*?) ni casi nada de lo que hay en esa función, alguien me hecha una mano? todavia tengo que implementar el del youtube y no se como hacerlo sin conocer el comportamiento xD

P.D Estoy harto de que no me deje poner los BBCode de URL al final me voy a hinchar a contestar mensajes hasta que alcanze las 30 respuestas porque me tiene desesperado ya
  #4 (permalink)  
Antiguo 04/06/2009, 12:57
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: BBCode a HTML Buffer

Lo que hace es usar expresiones regulares para realizar los reemplazos.

Puedes leer algo al respecto en el manual:
http://www.php.net/manual/es/intro.pcre.php
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 04/06/2009, 13:35
 
Fecha de Ingreso: marzo-2009
Mensajes: 42
Antigüedad: 15 años, 1 mes
Puntos: 5
Respuesta: BBCode a HTML Buffer

Si se parece al str_replace, por no decir que es el mismo.. xD

Lo e acabado de entender todo, voy a explicarlo por si alguien tuviera el mismo problema que yo.

Las barras \ significan que el caracter inmediatamente posterior lo van a imprimir, esto se usa mucho para escribir las barras invertidas o sin invertir, los corchetes, las comillas, etc.

Los (.*?) será lo que halla en medio, haciendo referencia luego en el array de HTML a los $1, $2,.. según cuantos (.*?) tengamos.

Los /is deben ser como modificadores.

Dejo tambien el código que me ha funcionado del youtube, muchas gracias ^^

Código:
$a = ("/\[youtube\](.*?)\[\/youtube\]/is");

$b = (
      "<object width=\"425\" height=\"344\"><param name=\"movie\" value=\"$1\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"$1\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"425\" height=\"344\"></embed></object>");
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 22:22.