Foros del Web » Programando para Internet » PHP »

Y que esto sigue sin funcionarme

Estas en el tema de Y que esto sigue sin funcionarme en el foro de PHP en Foros del Web. Haber si me ayudan esto es una de las cosas que le falta a mi foro para completarlo. Tengo estás funciones: Código PHP: function  BBCode ...
  #1 (permalink)  
Antiguo 07/06/2004, 23:12
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Y que esto sigue sin funcionarme


Haber si me ayudan esto es una de las cosas que le falta a mi foro para completarlo. Tengo estás funciones:
Código PHP:
function BBCode($text){
  
$bbcode eregi_replace("\\[web=([^\\[]*)\\]([^\\[]*)\\[/web\\]""<a target=\"_blank\" href=\"\\1\">\\2</a>"$text);
  
$bbcode eregi_replace("\\[web\\]([^\\[]*)\\[/web\\]","<a target=\"_blank\" href=\"\\1\">\\1</a>",$text);
  while(
$bucle<5) {
   
$bbcode eregi_replace("\\[u\\]([^\\[]*)\\[/u\\]","<u>\\1</u>",$text);
   
$bbcode eregi_replace("\\[i\\]([^\\[]*)\\[/i\\]","<em>\\1</em>",$text);
   
$bbcode eregi_replace("\[b\]([^\\[]*)\[/b\]","<strong>\\1</strong>",$text);
   
$bucle++;
  }
   
$bbcode eregi_replace("\\[center\\]([^\\[]*)\\[/center\\]","<div align=center>\\1</div>"$text);
   
$bbcode eregi_replace("\\[right\\]([^\\[]*)\\[/right\\]","<div align=right>\\1</div>"$text);
   
$bbcode eregi_replace("\\[left\\]([^\\[]*)\\[/left\\]","<div align=left>\\1</div>"$text);
   
$bbcode eregi_replace("\\[justify\\]([^\\[]*)\\[/justify\\]","<div align=justify>\\1</div>"$text);
   
$bbcode eregi_replace("\\[cita\\]([^\\[]*)\\[/cita\\]","\n<div class=\"css_title\">Cita\n<div class=\"css\">\\1</div></div>"$text);
   
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 PHPFormat($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>";
 } 
la cosa es que me han explicado que para usarla debo hacer esto:
Código PHP:
$formattext BBCode(nl2br($fetch['text'])); 
y entonces imprimo $formattext pero no me funciona pues lo que me escribe en la pagina es esto:
Cita:
Hola:
[ b ]Primero[ /b ] que todo gracias por lo de la actualizacion me pincho de lo mejor.Ahora suponiendo que lo que esta en ese campo lo quiero borrar (esto implica que la tabla tendria entoces una fila menos) por la misma via de la actualizacion lo que en este caso palabra_a_cambiar seria palabra_a_borrar que conyeva a lo anterior dicho.
Gracias de ante mano
Que hago mal o que es lo que pasa?
Salu2

PD: Si alguien ya lo ha hecho antes por favor que me lo explique pues de veras que ya me halo los pelos y nada de nada
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 08/06/2004, 01:15
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
hola

la verdad en este tema se me hace muucho código para lo que quieres hacer, yo hize el mio muy basico, sin embargo me funciona a la perfeccion, de hecho, en el mio formateo el texto y trasformo los codigos de las caritas en codigo para imagenes, todo en uno, lo unico que hago es un simplre str_replace por lo que quiero que se remplace, por ejemplo

Código PHP:
<?php
function editar($mensaje)
{
$mensaje str_replace("[ b ]""<b>"$mensaje);

return 
$mensaje;
?>
y asi para todo lo que quieras remplazar, piensalo, la verdad es que a mi se me hace mucho código para algo tan sencillo
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 08/06/2004, 06:47
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Pues mira

Ahora he hecho esto:
Código PHP:
function BBCode($text){
  
$bbcode str_replace("[b] ","<strong>",$text);
  
$bbcode str_replace("[/b]","</strong>",$text);
  return 
$bbcode;

y me remplaza [ /b ] por < /strong > pero a [ b ] no le hace ni caso sabes que puede ser?

Salu2
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 08/06/2004, 06:51
 
Fecha de Ingreso: diciembre-2003
Mensajes: 65
Antigüedad: 20 años, 4 meses
Puntos: 1
Cita:
Iniciado por Reynier
Ahora he hecho esto:
Código PHP:
function BBCode($text){
  
$bbcode str_replace("[b] ","<strong>",$text);
  
$bbcode str_replace("[/b]","</strong>",$text);
  return 
$bbcode;

y me remplaza [ /b ] por < /strong > pero a [ b ] no le hace ni caso sabes que puede ser?

Salu2
Sera por el espacio que dejaste??? en esa linea en donde esta [b] $bbcode = str_replace("[b] ","<strong>",$text);
  #5 (permalink)  
Antiguo 08/06/2004, 06:59
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Nada

Nada ya lo he arreglado y nada. Ahora esa linea tiene el caracter de salto de linea delante de [ b ]. será eso ??
Como podría erradicarlo?
Salu2
__________________
Ing. Reynier Pérez Mira
  #6 (permalink)  
Antiguo 08/06/2004, 11:30
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
hola

la verdad no se porque no te lo agarra, independientemente, yo utilizo este código

Código PHP:
<?php
function editar($mensaje)
{

    
$mensaje str_replace("[b]""<b>"$mensaje); 
             
$mensaje str_replace("[/b]""</b>"$mensaje);
                return 
$mensaje

?>
y me funciona a la perfeccion
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 09/06/2004, 12:42
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Pues mira

Ya he revisado todo el código y ahora me funciona en parte. Les explico para que entiendan. Este es el código después que me lo he estudiado y lo he arreglado:
Código PHP:
function BBCode($text){
  
$bbcode str_replace("[b]""<strong>",$text);
  
$bbcode str_replace("[/b]""</strong>",$bbcode);
  
$bbcode str_replace("[u]""<u>",$bbcode);
  
$bbcode str_replace("[/u]""</u>",$bbcode);
  
$bbcode str_replace("[i]""<i>",$bbcode);
  
$bbcode str_replace("[/i]""</i>",$bbcode);
  
$bbcode str_replace("[center]""<div align='center'>",$bbcode);
  
$bbcode str_replace("[/center]""</div>",$bbcode);
  
$bbcode str_replace("[left]""<div align='left'>",$bbcode);
  
$bbcode str_replace("[/left]""</div>",$bbcode);
  
$bbcode str_replace("[right]""<div align='right'>",$bbcode);
  
$bbcode str_replace("[/right]""</div>",$bbcode);
  
$bbcode str_replace("[justify]""<div align='justify'>",$bbcode);
  
$bbcode str_replace("[/justify]""</div>",$bbcode);
  
$bbcode str_replace("[cita]""\n<div class='css_title'>Cita: <div class='css'>",$bbcode);
  
$bbcode str_replace("[/cita]""</div></div>",$bbcode);
  
$bbcode str_replace("[url]","<a href='' target='_blank'>'"$bbcode);
  
$bbcode str_replace("[/url]","</a>'"$bbcode);

  
$bbcode eregi_replace('([[:space:]()[{}])([url]www.[-a-zA-Z0-9@:%_+.~#?&//=]+[/url])''\1<a href="http://\2" target="_blank">\2</a>'$bbcode);
  
$bbcode eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})','<a href=\"mailto:\1\">\1</a>'$bbcode);

  
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;
 }

 
# Función para código PHP
 
function PHPFormat($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>";
 } 
ahora bien. Estos son los dos textos que estoy tratando de mostrar:
Cita:
[ i ]Te[ /i ] podrías explicar un poco mejor pues no entiendo muy bien a que te refieres con esto:
esto implica que la tabla tendria entoces una fila menos
Salu2
[ url ]http://www.forosdelweb.com[ /url ]
[ PHP ]<? function ReturnDate(){ $date = date("Y"); return $date; } ?> [/PHP ]
y este el otro
Cita:
Hola:
[ b ]Primero[ /b ] que todo [ b ]gracias[ /b ] por lo de la actualizacion me pincho de lo mejor.Ahora suponiendo que lo que esta en ese campo lo quiero borrar (esto implica que la tabla tendria entoces una fila menos) por la misma via de la actualizacion lo que en este caso palabra_a_cambiar seria palabra_a_borrar que conyeva a lo anterior [ u ]dicho[ /u ].
[ url ]http://www.php.net[ /url ]
Gracias de ante mano
[ PHP ]
<?
function ReturnData(){
return $this->Data();
}
?>
[ /PHP ]
a los dos le hago la llamada de esta forma:
Código PHP:
  $cadena nl2br($fetch['text']);
  
$formattext BBCode($cadena); 
con el primero solo da formato al código PHP siempre y cuando este no tenga saltos de línea, por lo que no me coje las italicas o subrayadas o otros. Con el segundo no me formatea la URL ni el código PHP porque el mismo tiene saltos de línea. Que hago mal?

Salu2
__________________
Ing. Reynier Pérez Mira
  #8 (permalink)  
Antiguo 09/06/2004, 12:57
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
hola

bueno, he estado viendo tu codigo y me di cuenta en algo en la parte

Código PHP:
$bbcode str_replace("[b]""<strong>",$text); 
utilizas $text pienso yo que esto no deberia ser, pues estas comensando on $bbcode, ahora, otra cosa, yo siempre utilizo la funcion nl2br despues de dar formato al texto, mas o menos asi

Código PHP:
$textoBBcode($fetch['text']);
$formato_final nl2br ($texto); 
pues si pongo primero la funcion nl2br no me da el formato al menos a mi, como yo quiero
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 09/06/2004 a las 12:58
  #9 (permalink)  
Antiguo 09/06/2004, 13:18
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
OK. Gracias nemutagk probare y luego te digo
__________________
Ing. Reynier Pérez Mira
  #10 (permalink)  
Antiguo 09/06/2004, 20:40
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Pues mira que nada de nada

Gente:
De verás que ya no se que voy a hacer con eso ahora lo he llamado como me indico nemutagk de esta forma:
Código PHP:
 $cadena $fetch_01['text'];
  
$format BBCode($cadena);
  
$formattext nl2br($format); 
y nada. El ejemplo lo pueden ver en el Foro de Discusión mio. Entren a la web de ahi al Foro de PHP y de ahi al mensaje incremento. Para que vean lo que les explicaba en POST anteriores.
La dirección es: http://reynierpm.variosweb.com

Salu2
__________________
Ing. Reynier Pérez Mira
  #11 (permalink)  
Antiguo 09/06/2004, 20:53
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 20 años, 9 meses
Puntos: 2
Te estas liando en vano, el sistema original funciona, ha sido probado y funciona
http://www.php-hispano.net/archivos/Manuales/126

hay una correcion de Omar amigo Reynier
Omar dice :
Hay un error en la funcion phpcojecolor. Por favor cambiar la funcion por esta nueva. Ahora dejara lineas el codigo que antes no dejaba. Recuerda que si vas añádir un mensaje usando una form usas la funcion nl2br y cambiara las lineas por <br /> y podra mostrar el codigo dejando espacios.

Código PHP:
<? 
function phpcojecolor ($php) { 
// Remplaza los <br \> por lineas. 
$php str_replace("<br \>","\n",$php); 

ob_start(); // Abirmos el OB 
highlight_string($php); // Tiramos el codigo coloreado 
$cfinal ob_get_contents(); // COjo el codigo que tire despues de haber abierto el ob 
ob_end_clean(); // Borro el ob para que no se vea en la web 

// A continuación hemos hecho uso de una función realizada por Anonimo y que copié de la web [url]www.pastebin.com[/url]. Sirve para mostrar información sobre las funciones... [Proximas 7 lineas] 
$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 
"\n<div class=\"css_title\">C&oacute;digo PHP:\n<div class=\"css\">".$cfinal."</div></div>"// Retorno el codigo PHP Coloreado 

?>
Wave69 dice :
pues yo lo hago asi:

Código PHP:
<? 
// colorea texto y traduce BBcode. 
function trata_texto($texto) { 
$texto corta_palabras($texto) ; 
$texto str_replace("[codigo]""[codigo][CODIGO]"$texto) ; 
$texto str_replace("[/codigo]""[/CODIGO][/codigo]"$texto) ; 
$texto split("\[CODIGO\]|\[\/CODIGO\]"$texto) ; 
for(
$i 0$i count($texto); $i++) { 
ob_start() ; 
@
highlight_string($texto[$i]) ; 
$texto[$i] = ob_get_contents() ; 
ob_end_clean() ; 
$texto[$i] = substr($texto[$i], 28, -15) ; 

$texto implode("",$texto) ; 
$busca[0] = "/\[url=([^<> \n]+?)\](.+?)\[\/url\]/i" 
$reemplaza[0] = "<a href=\"\\1\" target=\"_blank\">\\2</a>" 
$busca[1] = "/\[b\](.+?)\[\/b\]/s" 
$reemplaza[1] = "<b>\\1</b>" 
$busca[2] = "/\[i\](.+?)\[\/i\]/s" 
$reemplaza[2] = "<i>\\1</i>" 
$busca[3] = "/\[u\](.+?)\[\/u\]/s" 
$reemplaza[3] = "<u>\\1</u>" 
$busca[4] = "/\[s\](.+?)\[\/s\]/s" 
$reemplaza[4] = "<s>\\1</s>" 
$busca[5] = "/\[cita\](.+?)\[\/cita\]/s" 
$reemplaza[5] = "<table align=\"center\" class=\"cita\"><tr><td>\\1</td></tr></table>" 
$busca[6] = "/\[codigo\](.+?)\[\/codigo\]/s" 
$reemplaza[6] = "<table align=\"center\" class=\"codigo\"><tr><td>\\1</td></tr></table>" 
$busca[7] = "/\[img\](.+?)\[\/img\]/s" 
$reemplaza[7] = "<a href=\"\\1\" target=\"_blank\"><img border=\"0\" src=\"\\1\" alt=\"\\1\"></a>" 
$texto = @preg_replace($busca$reemplaza$texto); 
return 
$texto 

?>
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol

Última edición por Gerald; 09/06/2004 a las 20:54
  #12 (permalink)  
Antiguo 09/06/2004, 23:38
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Hay dios mio

Que cosa esta que sigue sin funcionarme. Gerald en el codigo anterior ya habia realizado los cambios en la funcion phpcojecolor no se si te fijaste pero ya lo habia hecho. De todas formas he probado la variante que me das de Wave69 y nada tampoco. Que es lo que pasa?

Salu2
__________________
Ing. Reynier Pérez Mira
  #13 (permalink)  
Antiguo 10/06/2004, 11:58
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
oye amigo, entre a tu foro, pero me manda muchos errores :s, la mayoria es cuando llamas una funcion (main()) y tu session_start() tambien proboca warning, :s
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #14 (permalink)  
Antiguo 10/06/2004, 14:11
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Pues hermano

A mi no me da ningún error el Foro de Discusión yo lo he probado y otras personas tambien. Me podrías decir donde esta ese error, es decir, en que pagina.

Salu2
__________________
Ing. Reynier Pérez Mira
  #15 (permalink)  
Antiguo 11/06/2004, 09:15
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Ya pueden entrar al Foro y ver lo que me pasa con el código BBCode a la hora de formatearlo con la función que esta más arriba.
Salu2
__________________
Ing. Reynier Pérez Mira
  #16 (permalink)  
Antiguo 11/06/2004, 14:52
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Pues nada de nada

Chicos:
Necesito de su ayuda pues ya me he roto la cabeza y no encuentro porque esa función formatea el BBCode cuando le da la gana. He probado de todas las formas posibles y nada de nada. Ya probe como me dijo Gerald e incluso he estado leyendo al respecto y nada. ayudenme please.
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 12:37.