Foros del Web » Programando para Internet » PHP »

implementar BBCode

Estas en el tema de implementar BBCode en el foro de PHP en Foros del Web. pues veran consegui por ahi una funcion para insertar BBCode en un sistema de comentarios el problema es ke no se donde iria dicha funcion ...
  #1 (permalink)  
Antiguo 14/05/2005, 15:19
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 1 mes
Puntos: 4
implementar BBCode

pues veran consegui por ahi una funcion para insertar BBCode en un sistema de comentarios el problema es ke no se donde iria dicha funcion el codigo este:


Código PHP:
<?php
function bbcode($texto) {

$texto=nl2br(htmlentities($texto));

# URL's

$URLSearchString " a-zA-Z0-9:/-?&&amp;.=_~#'"# Lo caracteres aceptados.
$texto preg_replace("/[+url]([$URLSearchString]*)[/+url]/"'<a href="$1">$1</a>'$texto);
# Ejemplo: [+url]http://media.xergio.net/[/+url]

$texto preg_replace("([+url=([$URLSearchString]*)](.+?)[/+url])"'<a href="$1">$2</a>'$texto);
# Ejemplo: [+url=http://media.xergio.net/]xergioNET[/+url]

# Email's
$MAILSearchString $URLSearchString " a-zA-Z0-9.@"# de la A a la Z y tiene que contener una @ (arroba).
$texto preg_replace("([mail]([$MAILSearchString]*)[/mail])"'<a href="mailto:$1">$1</a>'$texto);
# Ejemplo: [mail][email protected][/mail]

$texto preg_replace("/[mail=([$MAILSearchString]*)](.+?)[/mail]/"'<a href="mailto:$1">$2</a>'$texto);
# Ejemplo: [[email protected]]e-mail[/mail]

# Imágenes
$texto preg_replace("/[+img](.+?)[/+img]/"'<img src="$1" alt="" />'$texto);
# Ejemplo: [+img]http://direccion.com/imagen.gif[/+img]

$texto preg_replace("/[img=([0-9]*)x([0-9]*)](.+?)[/img]/"'<img src="$3" height="$2" width="$1" alt="" />'$texto);
# Ejemplo: [img=180x160]http://direccion.com/imagen.gif[/img] (redimensionada)

# Etiquetas
# Negritas -> [+b]texto[/+b]
$texto preg_replace("([+b](.+?)[/+b])is",'<strong>$1</strong>',$texto);
$texto preg_replace("(&lt;b&gt;(.+?)&lt;/b&gt;)is",'<strong>$1</strong>',$texto);

# Cursiva -> [+i]texto[/+i]
$texto preg_replace("([+i](.+?)[/+i])is",'<em>$1</em>',$texto);
$texto preg_replace("(&lt;i&gt;(.+?)&lt;/i&gt;)is",'<em>$1</em>',$texto);

# Subrayado -> [+u]texto[/+u]
$texto preg_replace("([+u](.+?)[/+u])is",'<ins>$1</ins>',$texto);
$texto preg_replace("(&lt;u&gt;(.+?)&lt;/u&gt;)is",'<ins>$1</ins>',$texto);

return 
$texto;
}

# Ejemplo

echo bbcode("[+b]hola[/+b] [+i]me[/+i] [+u]llamo[/+u]. Mi foto: [+img]http://miservidor.com/yo.jpg[/+img], y mi página web: [+url]http://miservidor.com[/+url]. No te olvides de visitas [+url=http://media.xergio.net]xergioNET[/+url] y si tienes alguna [[email protected]]duda[/mail] envia un mail a [mail][email protected][/mail].");
?>
nota: Los que pone [+tal..] ó [/+tal] .. es porque si lo pongo sin el + se incorporan al bbcode de esta web y.. bueno se vería el ejemplo y lo mostraría como lo que tiene mostrar. Quitar el +, que todo va unido.

mi sistema de comentarios consta de estos dos scripts, ke creo algunos ya lo conocen pk me estaban ayudando con ello:

Código PHP:
<?
$query 
mysql_query("SELECT * FROM `firmas` WHERE id='$id'");  // hacemos un query para seleccionar las firmas de la id que tenemos seleccionada
$firma $query[firma] ;
while(
$row=mysql_fetch_array($query))  // con un while creamos un bucle que muestra todas
{
echo 
'<table width="550" border="0" cellspacing="1">
<tr><td><div class="autor"> &nbsp;<b>'
.$row["nombre"].'</b></div></td><td><div class="datefirma">'.$row["fecha"].'</div></td></tr>
<tr><td colspan="2" width="548"><div class="usercoment"> '
.$row["comentario"].'</div></td></tr></table><br>';  // mostramos las firmas, esto puedes modifcarlo a tu gusto, poniendole el estilo que quieras
}
if(!empty(
$_SESSION["usuario"])){
echo 
// ahora mostramos el form para añadir las firmas, el campo id del form no lo quiteis, si no no funcionara
'<table width="550" border="0" cellspacing="2"><tr><td class="titulo">Insertar comentario</td></tr>
<tr><td><div class="usercoment"><form action="insertarcomentario.php" method="POST">
<table width="520" border="0" cellspacing="2">
<tr><td colspan="2"><input type="hidden" name="autor" value="'
.$_SESSION["usuario"].'"></td></tr>
<tr><td colspan="2"><input type="hidden" name="autor" value="'
.$row["fecha"].'"></td></tr>
<tr><td colspan="2"><INPUT TYPE="hidden" value="'
.$id.'" NAME="id" readonly></td></tr>
<tr><td colspan="2"><textarea cols="20" rows="10" name="comentario" class="coment"></textarea></td></tr>
<tr><td width="150" colspan="2"><input type="submit" name="submit" value="Enviar comentario" id="boton"></td></tr></table></form></div></tr></td></table>'
;
}else {
echo 
'no estas registrado';
}
?>
y este el ke guarda los datos a la BD

Código PHP:
<?
session_start
();
include(
'config.php'); //incluimos Loas datos de la conexion

$comentario str_replace("\r\n","<br>",$comentario);
$comentario str_replace("\n\r","<br>",$comentario);
$comentario str_replace("\n","<br>",$comentario);
//introducimos el nuevo registro en la tabla firmas
$nombre $_SESSION['usuario'];
$fecha=date("Y.m.d");
mysql_query("INSERT INTO firmas (id,nombre,fecha,comentario) values ('$id','$nombre',NOW(),'$comentario') "); 
echo 
'Comentario Ingresado con exito'
?>
<a class="link3" href="javascript:history.back();"><strong>Regresar</strong></a>
ahora mi pregunta es en ke parte de esos scripts iria insertado el codigo fuente del BBCode ?, gracias y un saludo
  #2 (permalink)  
Antiguo 03/06/2005, 09:33
 
Fecha de Ingreso: junio-2005
Mensajes: 3
Antigüedad: 18 años, 9 meses
Puntos: 0
soy un tonto

hola soy noob y disculpa la pregunta tonta
pero como hago un enlace para mostrar un archivo flash por codigo bbcode
  #3 (permalink)  
Antiguo 03/06/2005, 11:04
 
Fecha de Ingreso: diciembre-2003
Mensajes: 218
Antigüedad: 20 años, 3 meses
Puntos: 0
Código PHP:
<?
session_start
();
include(
'config.php'); //incluimos Loas datos de la conexion

//INCLUIMOS LA FUNCION
include ('funciones.php'); //Donde tenemos la funcion del bbcode
//------------------

$comentario str_replace("\r\n","<br>",$comentario);
$comentario str_replace("\n\r","<br>",$comentario);
$comentario str_replace("\n","<br>",$comentario);

// AKI HACEMOS EL CAMBIO BBCODE
$comentario bbcode($comentario);
//---------------------------------

//introducimos el nuevo registro en la tabla firmas
$nombre $_SESSION['usuario'];
$fecha=date("Y.m.d");
mysql_query("INSERT INTO firmas (id,nombre,fecha,comentario) values ('$id','$nombre',NOW(),'$comentario') ");
echo 
'Comentario Ingresado con exito';
?>
<a class="link3" href="javascript:history.back();"><strong>Regresar</strong></a>
Prueba con eso y dinos cosas :D

Un saludo.
__________________
SymbianForever
SymbianForever.com, todo sobre y para tu symbian
aNieto2K | Themes para WordPress
De todo un poco
  #4 (permalink)  
Antiguo 03/06/2005, 11:12
 
Fecha de Ingreso: diciembre-2003
Mensajes: 218
Antigüedad: 20 años, 3 meses
Puntos: 0
Cita:
Iniciado por 1josejose1
hola soy noob y disculpa la pregunta tonta
pero como hago un enlace para mostrar un archivo flash por codigo bbcode
Agrega esto a la funcion de arriba del bbCode

Código PHP:
$numeros ="0-9";
$numeros2 ="0-9";
$texto preg_replace("([+flash=([$URLSearchString]*) w=([$numeros]*) h=([$numeros2]*)][/+flash])"'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="32" height="32">
  <param name="movie" value="$1" />
  <param name="quality" value="high" />
  <embed src="archivo.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="$2" height="$3"></embed>
</object>'
$texto); 
Prueba con esto o algo asi, no te fies mucho de q funcione, lo acabo de pensar, ni lo he probado ni nada :D

Un saludo.
__________________
SymbianForever
SymbianForever.com, todo sobre y para tu symbian
aNieto2K | Themes para WordPress
De todo un poco
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 11:18.