Foros del Web » Programando para Internet » PHP »

Ayuda para Citar en un post...!!!

Estas en el tema de Ayuda para Citar en un post...!!! en el foro de PHP en Foros del Web. Cita: Iniciado por webdesignsite Tengo esta function: function bbcode($string){ $string = nl2br(htmlspecialchars($string)); $patterns = array( '`\[quote\=(.*?)\](.*?)\[/quote\]`is' ); $replaces = array( '<strong>Quote:</strong><div><em>\1</em></div><div style="margin:0px 10px;padding:5px;background-color:#F7F7F7;border:1px dotted #CCCCCC;width:80%;"><em>\2</em></div>' ...

  #31 (permalink)  
Antiguo 30/04/2007, 14:03
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 3 meses
Puntos: 1
Exclamación Re: Ayuda para Citar en un post...!!!

Cita:
Iniciado por webdesignsite Ver Mensaje
Tengo esta function:

function bbcode($string){

$string = nl2br(htmlspecialchars($string));

$patterns = array(

'`\[quote\=(.*?)\](.*?)\[/quote\]`is'



);

$replaces = array(

'<strong>Quote:</strong><div><em>\1</em></div><div style="margin:0px 10px;padding:5px;background-color:#F7F7F7;border:1px dotted #CCCCCC;width:80%;"><em>\2</em></div>'




);


$string = preg_replace($patterns, $replaces , $string);

return $string;
}


Su resultado no es del todo correcto ya que si bién funciona correctamente cuando se cita una sola respuesta pero cuando se citan dos o más respuestas solo aparece citada la primera las demás no.

Por ej una sola respuesta citada funciona ok:

respuesta.



Por ej dos o más respuestas citadas funciona así:

[ quote="usuario" ]
respuesta citada2[ /quote ]
respuesta.


Cual será el error y que tendría que modificar para que aparezcan citadas todas las respuestas y no solo una???

Agradeceré a quien me de una mano.

Gracias.

Saludos!!!

Hola, solo necesitaría una pequeña ayuda para que los resultados de las "respuestas citadas" aparezcan todos correctamente y no solo una como explico más arriba.

Agradeceré quien pueda ayudarme.

Saludos!!!
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/
  #32 (permalink)  
Antiguo 26/06/2007, 15:20
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Ayuda para Citar en un post...!!!

Hola, necesito resolver este problemita:

Podrían ayudarme con esto, lean el post.

Gracias.

Saludos!!!
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/
  #33 (permalink)  
Antiguo 10/10/2007, 10:06
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 3 meses
Puntos: 1
Pregunta Re: Ayuda para Citar en un post...!!!

Hola tengo esta funcion:

Código PHP:
<?php
function bbcode_format ($str) {
    
$str htmlentities($str);

    
$simple_search = array(
                
'/\[b\](.*?)\[\/b\]/is',                                
                
'/\[i\](.*?)\[\/i\]/is',                                
                
'/\[u\](.*?)\[\/u\]/is',                                
                
'/\[url\=(.*?)\](.*?)\[\/url\]/is',                         
                
'/\[url\](.*?)\[\/url\]/is',                             
                
'/\[align\=(left|center|right)\](.*?)\[\/align\]/is',    
                
'/\[img\](.*?)\[\/img\]/is',                            
                
'/\[mail\=(.*?)\](.*?)\[\/mail\]/is',                    
                
'/\[mail\](.*?)\[\/mail\]/is',                            
                
'/\[font\=(.*?)\](.*?)\[\/font\]/is',                    
                
'/\[size\=(.*?)\](.*?)\[\/size\]/is',                    
                
'/\[color\=(.*?)\](.*?)\[\/color\]/is',        
                );

    
$simple_replace = array(
                
'<strong>$1</strong>',
                
'<em>$1</em>',
                
'<u>$1</u>',
                
'<a href="$1">$2</a>',
                
'<a href="$1">$1</a>',
                
'<div style="text-align: $1;">$2</div>',
                
'<img src="$1" />',
                
'<a href="mailto:$1">$2</a>',
                
'<a href="mailto:$1">$1</a>',
                
'<span style="font-family: $1;">$2</span>',
                
'<span style="font-size: $1;">$2</span>',
                
'<span style="color: $1;">$2</span>',
                );

    
// Do simple BBCode's
    
$str preg_replace ($simple_search$simple_replace$str);

    
// Do <blockquote> BBCode
    
$str bbcode_quote ($str);

    return 
$str;
}



function 
bbcode_quote ($str) {
    
$open '<blockquote>';
    
$close '</blockquote>';

    
// How often is the open tag?
    
preg_match_all ('/\[QUOTE\]/i'$str$matches);
    
$opentags count($matches['0']);

    
// How often is the close tag?
    
preg_match_all ('/\[\/QUOTE\]/i'$str$matches);
    
$closetags count($matches['0']);

    
// Check how many tags have been unclosed
    // And add the unclosing tag at the end of the message
    
$unclosed $opentags $closetags;
    for (
$i 0$i $unclosed$i++) {
        
$str .= '</blockquote>';
    }

    
// Do replacement
    
$str str_replace ('[' 'QUOTE]'$open$str);
    
$str str_replace ('[/' 'QUOTE]'$close$str);

    return 
$str;
}
?>

Lo que realiza entre otras cosas y es lo que me interesa, es citar post ya citados las veces que quiera, esta funcion esta ok!.
Mi problema es que quiero que también me incluya el nombre de usuario, o sea así [ QUOTE=us ]cita[ / QUOTE ]respuesta (esta es la forma en que están guardadas en BD), trate de modificar la function pero no me funciona y el resultado es incorrecto.

En fin, como podría realizar lo que expuse mas arriba?

Gracias y saludos!!!


P.D.:
Los corchetes de arriba están separados p/ que no aparezca citado.
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/
  #34 (permalink)  
Antiguo 10/10/2007, 15:07
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Ayuda para Citar en un post...!!!

Hay alguien ???
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/
  #35 (permalink)  
Antiguo 11/10/2007, 19:23
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Ayuda para Citar en un post...!!!

Agrega estas dos funciones:

Código PHP:
function contar_open_tags($str) {
    
preg_match_all ('/\[QUOTE\=(.*?)\]/i'$str$matches);
    
$opentags count($matches['0']);
    
preg_match_all ('/\[QUOTE\]/i'$str$matches2);
    
$opentags $opentags+count($matches2['0']);
    return (
$opentags 0) ? $opentags false;
}
 
function 
contar_close_tags($str) {
    
preg_match_all ('/\[\/QUOTE\]/i'$str$matches);
    
$closetags count($matches['0']);
    return (
$closetags 0) ? $closetags false;

y tu funcion bbcode_quote() queda asi:
Código PHP:
function bbcode_quote ($str) {
 
$open '<blockquote style="border-left: 1px solid #000;">';
$close '</blockquote>';
 
// How often is the open tag?
$opentags contar_open_tags($str);
 
// How often is the close tag?
$closetags contar_close_tags($str);
 
// Check how many tags have been unclosed
// And add the unclosing tag at the end of the message
$unclosed $opentags $closetags;
for (
$i 0$i $unclosed$i++) {
$str .= '[/quote]';
}
// Do replacement
    
$search = array( "/\[quote\](.*?)\[\/quote\]/is","/\[quote\=(.*?)\](.*?)\[\/quote\]/is" ); 
    
$replace = array( "\n$open\n$1\n$close\n","\n$open\n<b><i>Publicado por $1</i></b>\n<br />\n$2\n$close\n" );
 
    while(
contar_open_tags($str)) {
        
$str preg_replace$search$replace$str );
    }
    return 
preg_replace$search$replace$str );
 

Asi te debe funcionar bien...

Prueba con esto:

Código PHP:
ob_start();
 
//AQUI EMPIEZA EL MENSAJE
?>
Hola, este es mi mensaje. Veamos como funciona esto:
[quote=okram]
    Yo publique este mensaje, pienso qe va a funcionar. NO cerrare este quote, pero habra otros anidados:
    [quote]
        Este no tiene autor
    [/quote]
    Ya se cerro el quote sin autor, pero recuerden que no cerrare el primer quote
    [quote=algo]
        Segundo post con autor algo
        [quote]
            Este no tiene autor
        [/quote]
        Ya se cerro el quote sin autor
        [quote=otro algo]
            y ahora? esto lo publico otro algo
            [quote]
                Este no tiene autor
            [/quote]
                Cerro quote sin autor
 
            [quote=otro algo mas]
                y ahora? esto lo publico otro algo mas
                [quote]
                    Este no tiene [b]autor[/b], pero esto esta en [i]cursiva[/i]
                [/quote]
            [/quote]
            Cerro quote de otro algo mas
        [/quote]
    [/quote]
    Termino el segundo con autor algo
<?php
$str 
ob_get_contents();
ob_end_clean();
echo 
bbcode_quote($str);
LIVE EXAMPLE:

Funcionando: http://ejemplos.fdw.myokram.info/quote/
Código: http://ejemplos.fdw.myokram.info/quote/?source

Un saludo,

Última edición por okram; 12/10/2007 a las 05:47
  #36 (permalink)  
Antiguo 12/10/2007, 16:00
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Ayuda para Citar en un post...!!!

Ok, el script funciona bién.

Gracias.



Saludos!!!
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/
  #37 (permalink)  
Antiguo 12/10/2007, 16:04
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 3 meses
Puntos: 1
Exclamación Re: Ayuda para Citar en un post...!!!

Ok, el script funciona muy bién.

Gracias.


Saludos!!!
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:57.