Autor Tema: [Ayuda] Citar comentario y quitar <br />  (Leído 1056 veces)

Desconectado judoka

  • PHPero Avanzado
  • ****
  • Mensajes: 255
  • Karma: 4
  • Sexo: Masculino
  • Programando hasta lo mas alto.
    • Ver Perfil
[Ayuda] Citar comentario y quitar <br />
« en: 27 de Octubre de 2011, 21:17:15 pm »
Hola, hoy me ha surgido un nuevo problemilla que no sé o no se me ha ocurrido como solucionar:
Tengo una especie de "foro" en el que existe el típico botón de "responder" donde al darle, en el textarea de escribir comentario se copia el comentario al que quieres contestar así: ["quote]Mensaje[/quote] (al puro estilo foro) de la siguiente manera:
Citar
<a href="javascript:onclick(document.getElementById(&#39;mensaje&#39;).value=&#39;[quote]<?=seguridad($topic[&#39;texto&#39;]);?>[/quote]&#39;);">Responder</a>
ahora bien, como los saltos de lineas se guardan en la bd como <br /> gracias a nl2br, al "citar" el mensaje salen todos los <br /> y no se me ocurre como reemplazarlos por saltos de linea invisibles.

Ej de como lo veo:
Citar
esto es<br />un comentario<br />y quiero arreglarlo.
Así quiero verlo:
Citar
esto es
un comentario
y quiero arreglarlo

He probado con lo siguiente en la función seguridad:
$a = array(
//....
      "/<br /\>//is",
   );
$b = array(
//....
     "\n",
   );
$texto=preg_replace($a, $b, $texto);

pero no funciona.. :S

Comunidad PHPeros

[Ayuda] Citar comentario y quitar <br />
« en: 27 de Octubre de 2011, 21:17:15 pm »

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Ayuda] Citar comentario y quitar <br />
« Respuesta #1 en: 27 de Octubre de 2011, 21:28:27 pm »
Si filtras los datos al guardarlo, por que también los filtras al leerlos?, no es necesario.
Por cierto:
Código: [Seleccionar]
<a href="javascript:onclick(document.getElementById('mensaje').value='[quote]<?=seguridad($topic['texto']);?>[/quote]');">Responder</a>
Esa no es la mejor forma de citar un texto.
Saludos.
Twitter: @JoakoM010



Desconectado judoka

  • PHPero Avanzado
  • ****
  • Mensajes: 255
  • Karma: 4
  • Sexo: Masculino
  • Programando hasta lo mas alto.
    • Ver Perfil
Re:[Ayuda] Citar comentario y quitar <br />
« Respuesta #2 en: 27 de Octubre de 2011, 21:42:18 pm »
Y que método me recomiendas para citar un texto?
Es que la función sirve de encriptador y desencriptador:
Al enviar datos tan solo se usa el htmlespecialchars, nl2br, etc... y al recibir se usa la función de los bbcodes (el preg_replace) y similares..

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Ayuda] Citar comentario y quitar <br />
« Respuesta #3 en: 27 de Octubre de 2011, 21:46:17 pm »
Y que método me recomiendas para citar un texto?
Es que la función sirve de encriptador y desencriptador:
Al enviar datos tan solo se usa el htmlespecialchars, nl2br, etc... y al recibir se usa la función de los bbcodes (el preg_replace) y similares..

¿Podrás colocar el código PHP para ayudarte tanto al guardar datos como al mostrarlos?
¿Al momento de mostrar la cita (el mensaje) filtras el contenido de alguna manera? (No lo filtres al mostrar datos, solo al guardar).
Otra cosa es que intentes cambiando la posición del nl2br.

Saludos.
Twitter: @JoakoM010



Desconectado judoka

  • PHPero Avanzado
  • ****
  • Mensajes: 255
  • Karma: 4
  • Sexo: Masculino
  • Programando hasta lo mas alto.
    • Ver Perfil
Re:[Ayuda] Citar comentario y quitar <br />
« Respuesta #4 en: 27 de Octubre de 2011, 21:51:54 pm »
ok, pues si es solo al guardar lo tengo así:
Código: [Seleccionar]
function seguridad($texto){
$texto=strip_tags($texto);
$texto=htmlspecialchars($texto);
$texto=stripslashes($texto);
$texto=nl2br($texto);
$a = array(
      "/\[i\](.*?)\[\/i\]/is",
      "/\[b\](.*?)\[\/b\]/is",
      "/\[u\](.*?)\[\/u\]/is",
      "/\[img\](.*?)\[\/img\]/is",
      "/\[url=http://(.*?)\](.*?)\[\/url\]/is",
  "/\[quote\](.*?)\[\/quote\]/is",
  "/&gt;/is",
  "/&lt;/is",
  "/&quot;/is",
  "/&amp;/is",
   );
$b = array(
      "<i>$1</i>",
      "<b>$1</b>",
      "<u>$1</u>",
      "<a href=\"$1\" /><img style=\"max-height:350px; max-weight:350px;\" src=\"$1\" /></a>",
      "<a href=\"$1\" target=\"_blank\">$2</a>",
  "<blockquote>$1</blockquote>",
  ">",
  "<",
  "\"",
  "&",
   );
$texto=preg_replace($a, $b, $texto);
return $texto;
}
« Última modificación: 27 de Octubre de 2011, 21:54:20 pm por judoka »

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Ayuda] Citar comentario y quitar <br />
« Respuesta #5 en: 27 de Octubre de 2011, 22:04:01 pm »
Pues, si se guardan los <br> en la base de datos falta saber como, quitale todas las protecciones al momento de mostrar el mensaje y ve si te funciona al imprimirlo para hacer la prueba.
Twitter: @JoakoM010



Desconectado judoka

  • PHPero Avanzado
  • ****
  • Mensajes: 255
  • Karma: 4
  • Sexo: Masculino
  • Programando hasta lo mas alto.
    • Ver Perfil
Re:[Ayuda] Citar comentario y quitar <br />
« Respuesta #6 en: 27 de Octubre de 2011, 22:12:34 pm »
Quitadas y en el post original se ve bien, pero a la hora de citar, se ve el <br />

Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:[Ayuda] Citar comentario y quitar <br />
« Respuesta #7 en: 27 de Octubre de 2011, 22:18:56 pm »
Puedes hacer una función que cambie en <br /> por una nueva línea "\n".
- Moderador de PHP


Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Ayuda] Citar comentario y quitar <br />
« Respuesta #8 en: 27 de Octubre de 2011, 22:20:02 pm »
Quitadas y en el post original se ve bien, pero a la hora de citar, se ve el <br />

¿Que fue exactamente lo que quitaste al momento de visualizar el mensaje? (No de guardar)
Lo digo por que al momento de guardar lo veo todo bien.

Puedes hacer una función que cambie en <br /> por una nueva línea "\n".

Muere!
Twitter: @JoakoM010



Desconectado judoka

  • PHPero Avanzado
  • ****
  • Mensajes: 255
  • Karma: 4
  • Sexo: Masculino
  • Programando hasta lo mas alto.
    • Ver Perfil
Re:[Ayuda] Citar comentario y quitar <br />
« Respuesta #9 en: 27 de Octubre de 2011, 22:26:26 pm »
@Warlox: es lo que intento y no puedo (mira la última parte del main post).

@SoyJoaquin: en realidad me equivoqué, a la hora de mostrar e mensaje no descifraba nada, lo copie aquí mal.
Por tanto en la bd ya se almacena correctamente (si yo envio un comentario con hola en la bd ya aparece como <b>hola</b> por tanto al mostrar no necesito descifrar nada.

Desconectado judoka

  • PHPero Avanzado
  • ****
  • Mensajes: 255
  • Karma: 4
  • Sexo: Masculino
  • Programando hasta lo mas alto.
    • Ver Perfil
Re:[Ayuda] Citar comentario y quitar <br />
« Respuesta #10 en: 29 de Octubre de 2011, 13:45:39 pm »
Up!
Necesito ayuda, por favor.

Edito: Gracias por la ayuda, he terminado por hacer una función br2nl():

function br2nl($text) {return  preg_replace('/<br\\s*?\/??>/i', '', $text);}
« Última modificación: 02 de Noviembre de 2011, 23:29:52 pm por judoka »

Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
Re:[Ayuda] Citar comentario y quitar <br />
« Respuesta #11 en: 11 de Noviembre de 2011, 03:12:19 am »
Una pequeña modificación:

function br2nl($text) {return  preg_replace(&#39;/<br\\s*?\/??>/i&#39;, "\n", $text);}


Saludos