¿Cómo se puede hacer para poner un bbcode, como el de estos foros, pero manualmente?
Lo que yo tengo es un formularios que es procesado por un archivo php, que guarda los datos en una base de datos. Despues esos datos se piden en otros archivos para mostrarlos.
Buscando en internet encontré una función, pero no se como debo hacerlo para que procese el campo mensaje.
Te he marcado la eqtiqueta en negrita. Como ves los corchetes van capados (con esta barra delante \).
El texto que he subrayado es lo que reemplazara a lo que haya entre las dos etiquetas.
Despues, en las segundas comillas has de poner por lo que se reemplaza. La variable 1 es lo que estaba subrayado antes, es decir, lo que esta entre las etiquetas.
-----
Te pongo otro ejemplo, esta vez con 2 "incognitas": por ejemplo las url.
Ahi utiliza 2 veces ([^\[]*) . Cuando se usa eso es porque sera un texto que no sabemos cual es, eso nunca lo reemplaza. Lo guarda en variables.
Luego si te fijas en donde reemplazamos tenemos puesto 1 y 2. El 1 es el primer ([^\[]*) y el 2 el segundo.
-------
La funcion es esa, luego has de repetirla tantas veces como tags tengas para mostrar. Con eso puedes crear todo tipo de bbcodes que se te ocurran. Solo defines el tag, defines el codigo html y la parte que ha de "respetar" sin editar.
No se si me he explicado muy bien... es cuestion de entender la funcion. Si tienes dudas, pregunta
Pensando que el lugar de < es < y en lugar de > es >, si. Supongo que habra sido el editor de miarroba el que ha hecho ese cambio.
No, cuando lo envias en el formulario se ha de enviar sin modificar. Ya que si luego tu lo editas, te saldrian los codigos html en lugar del bbcode y tu no quieres que pase eso. En la base de datos lo has de meter directamente, guardado como [tag]texto[/tag]
Lo has de poner en el fichero que carga ese texto de la base de datos y lo "imprime" (lo muestra).
No, estaba bien como te lo he puesto yo. Aunque tiene un error, no es str_replace es: eregi_replace, cambialo y solucionado.
Tienes un pequeño lio con las variables:
Si tu pones function bbcode($variable). $variable SOLO tendra un valor para dentro de esa funcion. Es decir que si yo luego pongo print $variable, no saldra nada. Lo que hace es igualar $variable a lo que yo le doy como valor. P. ejmplo si pongo function bbcode($mensaje), $variable = $mensaje; si pusiera function bbcode('hola'), $variable = 'hola'. Por ello, si tu pones $mensaje = bbcode($texto); $texto no esta definido y por ello no te sale nada.
Por otra parte si tu haces $variable = bbcode($mensaje); lo que hace es que $variable toma el valor de $mensaje despues de haber reemplazado el bbcode, si es que tiene.
Y, antes has puesto: $mensaje = $mensaje; Si $mensaje no estaba definido, $mensaje no puede tener nignun valor! Tienes que darselo tu. Por ejemplo: $mensaje = "Texto";
Haz lo que te he dicho en la primera frase y te funcionara, el resto ha sido una pequeña explicacion (que no me ha quedado muy clara) para intentar corregir un par de errores que te he visto.
entonces, en vez de: "[b]Negrita[/b] - [i]Cursiva[/i] - [u]Subrayado[/u]" tengo que poner la variable que contiene el mensaje en la base de datos, que es $mensaje, por lo que tengo que cambiar los otros $mensaje por otro nombre de variable como por ejemlo $post, no?
porque no puedo poner al principio $mensaje = $mensaje; sino: $post = $mensaje;
No hace falta. Con que cambies "Negrita - Cursiva - Subrayado" por la consulta a la base de datos (exactamente por el campo de la tabla que hayas de reemplazar) sobra.
No tiene porque ser $mensaje el dato que tu sacas de la base de datos lo habras de definir tu. Habras de hacer la conexion a la base de datos, elegir la tabla y elegir el campo. Eso lo has de guardar una variable, pongamosle $ctext
Luego, habras de hacer: $variable = bbcode($ctext); print $variable;
o, directamente: print bbcode($ctext);
Ponme el codigo entero de la pagina donde lo pones y lo miro
$sql = "SELECT id, autor, titulo, mensaje, "; $sql.= "DATE_FORMAT(fecha, '%d/%m/%Y') as fecha FROM foro "; $sql.= "WHERE id='$id' OR identificador='$id' ORDER BY fecha ASC"; $rs = mysql_query($sql, $con);
Tengo una idea. Crea un fichero llamado fbbcode.php (lo puedes llamar como quieras siempre y cuando modifiques bien el resto de codigos que te voy a poner a continuacion) que tenga este codigo:
Despues en foro.php buscas: include('cabecera.php');
y añades debajo:
require_once('fbbcode.php');
si no se llama fbbcode.php cambia ese trozo.
Con eso creo que bastara. Creo que lo que pasa es que ese mensaje.php lo inserta mas de una vez y entonces si que crea 2 veces la funcion. El error es eso que, de una manera u otra, repite la funcion bbcode(). Yo creo que con lo que te he puesto sera suficiente.
TU NO PUEDES Escribir nuevos temas en este foro TU NO PUEDES Responder a los temas en este foro TU NO PUEDES Editar tus propios mensajes en este foro TU NO PUEDES Borrar tus propios mensajes en este foro
Todas las fechas y horas son GMT+1. Ahora son las 01:26