Foros del Web » Programando para Internet » PHP »

BBCode

Estas en el tema de BBCode en el foro de PHP en Foros del Web. Bueno ante todo he de decirles que casi casi tengo terminado mi Foro. Por lo menos la parte de mostrar las cosas. No he realizado ...
  #1 (permalink)  
Antiguo 04/06/2004, 21:36
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
BBCode

Bueno ante todo he de decirles que casi casi tengo terminado mi Foro. Por lo menos la parte de mostrar las cosas. No he realizado nada de realizar las inserciones en tablas todavía. Hace unos días me topé con un POST donde se hablaba de un código para parsear BBCode. El link es este por si quieren revisarlo: http://www.php-hispano.net/archivos/Manuales/126. Pues bien he bajado y modificado un poco ese código para adaptarlo a mis necesidades. Este es el resultado de esa modificación:
Código PHP:
# Mod: BBCode
 
function BBCode($text){
  
# Links para URLs. Formato: [web=http://www.miweb.com]Mi web[/web]
  
$bbcode eregi_replace("\\[web=([^\\[]*)\\]([^\\[]*)\\[/web\\]""<a target=\"_blank\" href=\"\\1\">\\2</a>"$bbcode);
  
# Si no ponen atributos en [web]. Formato: [web]http://www.miweb.com[/web]
  
$bbcode eregi_replace("\\[web\\]([^\\[]*)\\[/web\\]","<a target=\"_blank\" href=\"\\1\">\\1</a>",$bbcode);
  
# Bucle por si usan [B][U][I] en el mismo texto
  
while($bucle<5) {
   
# Para poner linea al texto. Formato: [U]MiWeb[/U]
   
$bbcode eregi_replace("\\[u\\]([^\\[]*)\\[/u\\]","<u>\\1</u>",$bbcode);
   
# Para poner el text en italic. Formato: [I]MiWeb[/I]
   
$bbcode eregi_replace("\\[i\\]([^\\[]*)\\[/i\\]","<em>\\1</em>",$bbcode);
   
# Para poner texto en negrita Formato: [B]MiWeb[/B]
   
$bbcode eregi_replace("\\[b\\]([^\\[]*)\\[/b\\]","<strong>\\1</strong>",$bbcode);
   
$bucle++;
  }
   
# Para centralizar un texto. Formato: [centro] [/centro]
   
$bbcode eregi_replace("\\[center\\]([^\\[]*)\\[/center\\]","<div align=center>\\1</div>"$bbcode);
   
# Para centralizar un texto. Formato: [derecha] [/derecha]
   
$bbcode eregi_replace("\\[right\\]([^\\[]*)\\[/right\\]","<div align=right>\\1</div>"$bbcode);
   
# Para centralizar un texto. Formato: [izquierda] [/izquierda]
   
$bbcode eregi_replace("\\[left\\]([^\\[]*)\\[/left\\]","<div align=left>\\1</div>"$bbcode);
   
# Para centralizar un texto. Formato: [justificado] [/justificado]
   
$bbcode eregi_replace("\\[justify\\]([^\\[]*)\\[/justify\\]","<div align=justify>\\1</div>"$bbcode);
   
# Pone el texto como una cita. Formato: [CITA] [/CITA]
   
$bbcode eregi_replace("\\[cita\\]([^\\[]*)\\[/cita\\]","\n<div class=\"css_title\">Cita\n<div class=\"css\">\\1</div></div>"$text);
   
# Sacamos el color al codigo PHP. Formato: [  PHP  ] [  /PHP  ]
   
preg_match_all ("/(\[)(php)(])(.*)(\[\/php\])/iU"$text$l);
   for(
$i=0$icount($l[0]); $i++){
    
$bbcode str_replace($l[0][$i],PHPFormat($l[4][$i]),$text);
   }
   return 
$bbcode;
  }
#Funcion para código PHP
 
function PHPFomrmat($php) {
  
$php str_replace("<br \>","\n",$php);
  
ob_start();
  
highlight_string($php);
  
$cfinal ob_get_contents();
  
ob_end_clean();
  
$keycol=ini_get("highlight.keyword");
  
$manual="http://www.php.net/manual-lookup.php?lang=es&amp;pattern=";
  
$cfinal=preg_replace('{([\w_]+)(\s*</font>)'.
                       
'(\s*<font\s+color="'.$keycol.'">\s*\()}m',
                       
'<a href="'.$manual.'$1" title="Ayuda en PHP.net sobre $1" target="_blank">$1</a>$2$3',
                       
$cfinal);
  return 
"<div class='ccs_title'>Código PHP:<div class='css'>".$cfinal."</div></div>";
 } 
pues bien lo que pasa es que cuando llamo a esa función con resultados sacados de una BDatos dígamos que este sea el contenido de lo que he sacado de la BDatos:
[QUOTE]
[ b ] Ya que algunas personas me lo han pedido estas son las ventajas que ofrece el PHP sobre otros lenguajes de programación: [ /b ]

Las páginas HTML estáticas que has realizado son eso mismo .. estáticas. No hay procesos automáticos como los que podrías hacer desde PHP. Ejemplo: actualizar contenido; en tus páginas HTML actuales .. si quieres cambiar algo del contenido debes usar tu editor HTML .. modificarla en tu PC .. tener los conocimientos suficientes de HTML y manejo de esas aplicaciones y subirlo a tu servidor nuevamente. En resumen .. tu cliente depende de tu disponibilidad para esa taréa de actualización de contenido. Con PHP .. el contenido lo podría actualizar tu usuario directamente sobre un "panel de administración" que le hagas ..donde con un formulario HTML y pco más actualizaría lo que necesite.

Con PHP (y en general con cualquier lenguaje del lado del servidor) puedes interactuar con Base de datos .. mandar un e-mail (sin pasar por el cliente de correo que pueda o no tener instalado tu visita a tu web ..).. Generar código HTML/javscript de forma dinámica .. con lo cual partes de código repetitivas podrías reutilizarlas ..

En fin .. con PHP vas a darle "dinamismo" a ese sitio .. En ningún momento vas a avandonar tu HTML/javascript que ya dominas. Con PHP sólo vas a "decidir" que HTML mostrar o no según tu programación en PHP y "formateando" los datos que obtengas de una BD .. un archivo de texto plano .. generados por el própio código u otros médios.

Salu2
[PHP]
lo que me imprime mi pagina al hacer esta llamada de la funcion
Código PHP:
BBCode(nl2br($fetch['text'])); 
es lo mismo que esta arriba que saque de la base de datos, es decir no me sustituye [ b ] [ /b ] por negritas y asi con todo. Que hay mal en todo esto?
Salu2
PD: He puesto ^ en las negritas para que FDW no me las formatee y entiendan lo que quiero decir
__________________
Ing. Reynier Pérez Mira

Última edición por Reynier; 04/06/2004 a las 21:39
  #2 (permalink)  
Antiguo 05/06/2004, 05:39
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

¿No hay demasiados \\ en el codigo? Es que por ejemplo \\[b\\] creo que deberia ser solo \[b\] , simplemente escapando los [].

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 05/06/2004, 08:14
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Pues nada josemi he probado a hacer lo que me dices y nada
¿Qué hago? :(
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 05/06/2004, 08:44
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Ahora que me fijo, el nombre del parametro es $text, pero en el primer eregi_replace() le pasas $bbcode, que luego utilizas en las demas. Pon:
Código PHP:
$bbcode=$text
como primera linea de la funcion.

Y luego en las ultimas vuelves a usar $text como cadena original, cuando deberias usar $bbcode, es decir, el texto que ya has estado modificando.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 05/06/2004, 08:56
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
A ver vamos por parte

Josemi ya entendí la primera parte, pero:
Cita:
Y luego en las ultimas vuelves a usar $text como cadena original, cuando deberias usar $bbcode, es decir, el texto que ya has estado modificando.
a que te refieres con las últimas? eso no lo entendí.
Salu2
__________________
Ing. Reynier Pérez Mira
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 16:49.