Foros del Web » Programando para Internet » PHP »

Haciendo chat... sustituir :smiley: por imagen

Estas en el tema de Haciendo chat... sustituir :smiley: por imagen en el foro de PHP en Foros del Web. Hola, estoy haciendo un chat en php donde puedes enviar smileys, hay un campo de texto donde escribes el mensaje a enviar y debajo unos ...
  #1 (permalink)  
Antiguo 15/04/2010, 12:47
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Pregunta Haciendo chat... sustituir :smiley: por imagen

Hola, estoy haciendo un chat en php donde puedes enviar smileys, hay un campo de texto donde escribes el mensaje a enviar y debajo unos smileys, si pinchas en un smiley, en el campo de texto se añade :nombredelsmiley:.

Bueno, digamos que tengo el siguiente mensaje:


Código:
Hola como estais? :sonriente: :enfadado:
¿Como podria hacer en php para buscar todo lo que este entre ':' y sustituirlo con una <img> con src = "iconos/ nombredelsmiley"?

¿Cual es la mejor forma?

me refiero a esto:

Muchas gracias!
__________________
http://www.pkmrpg.es
  #2 (permalink)  
Antiguo 15/04/2010, 13:12
Avatar de danistrein  
Fecha de Ingreso: septiembre-2008
Ubicación: Salta Capital
Mensajes: 550
Antigüedad: 15 años, 7 meses
Puntos: 9
De acuerdo Respuesta: Haciendo chat... sustituir :smiley: por imagen

hola lo puedes hacer con preg_replace. un ejemplo de como hacerlo con una function:
Código PHP:
Ver original
  1. function codes($contenido){
  2. $dvdcodes = array(
  3. "/\<(.*?)>/is",
  4. "/\[\carita1\]/is",
  5. "/\[\carita2\]/is",
  6. );
  7. $html = array(
  8. "<$1>",
  9. "<img src="imagen-carita1.jpg">",
  10. "<img src="imagen-carita2.jpg">",
  11. );
  12. $contenido = preg_replace($codes, $html, $contenido);
  13. return $contenido;
  14. }
  15.  
  16. $web="caritas: [carita1] y [carita2]"
  17. codes($web);
No necesariamente tiene que ser [carita1] o [carita2] puedes ponerle el nombre que a ti te guste.

__________________
Appones.net - www.appones.net
  #3 (permalink)  
Antiguo 15/04/2010, 13:54
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Haciendo chat... sustituir :smiley: por imagen

Hola danistrein, gracias por responder!

Todo va bien, menos por una cosa, este es mi replace:

Código PHP:
//Procesamos codigos de emoticonos
                
$codigo_emoticonos = array('[guay]''[enfadado]''[loco]''[risa]''[muerto]''[sudoroso]''[sueño]''[vergonzoso]''[bonito]''[atencion]''[amor]''[fantasma]''[furtivo]''[llora]''[inocente]''[vacio]''[angel]''[enfadado2]');
                
$html_emoticonos =
                array(
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>"
                
);
                
$mensaje_texto preg_replace($codigo_emoticonos$html_emoticonos$mensaje['texto']); 
El problema esque salen los emoticonos entre corchetes [] y no lo entiendo..

¿A que se debe? ¿No puedo utilizar los corchetes ya que estan reservados o algo por el estilo?

Gracias!
__________________
http://www.pkmrpg.es
  #4 (permalink)  
Antiguo 15/04/2010, 14:21
Avatar de danistrein  
Fecha de Ingreso: septiembre-2008
Ubicación: Salta Capital
Mensajes: 550
Antigüedad: 15 años, 7 meses
Puntos: 9
Respuesta: Haciendo chat... sustituir :smiley: por imagen

Cita:
Iniciado por astut Ver Mensaje
Hola danistrein, gracias por responder!

Todo va bien, menos por una cosa, este es mi replace:

Código PHP:
//Procesamos codigos de emoticonos
                
$codigo_emoticonos = array('[guay]''[enfadado]''[loco]''[risa]''[muerto]''[sudoroso]''[sueño]''[vergonzoso]''[bonito]''[atencion]''[amor]''[fantasma]''[furtivo]''[llora]''[inocente]''[vacio]''[angel]''[enfadado2]');
                
$html_emoticonos =
                array(
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
                    
"<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>"
                
);
                
$mensaje_texto preg_replace($codigo_emoticonos$html_emoticonos$mensaje['texto']); 
El problema esque salen los emoticonos entre corchetes [] y no lo entiendo..

¿A que se debe? ¿No puedo utilizar los corchetes ya que estan reservados o algo por el estilo?

Gracias!

nunca eh probado la forma que tu utilizas te sugiero que utilices como te deje el código. total son unos códigos mas que ahi que escribir no es tanto esfuerzo
__________________
Appones.net - www.appones.net
  #5 (permalink)  
Antiguo 15/04/2010, 15:17
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Pregunta Respuesta: Haciendo chat... sustituir :smiley: por imagen

Hola, no quiero poner codigo que no comprendo, indico que sustituyo una serie de [carita1], [carita2] por sus imagenes, pero cuando los muestro me salen entre corchetes, de esta forma :

[]

he probado cambiandolos por otro caracter como : pero lo mismo...

::

¿Porque pasa esto?

dejo una imagen para que veas mejor:
__________________
http://www.pkmrpg.es
  #6 (permalink)  
Antiguo 15/04/2010, 15:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Haciendo chat... sustituir :smiley: por imagen

Lo que pasa es que tus reglas para hacer el reemplazo estan mal, lee lo siguiente: http://www.forosdelweb.com/f18/aport...s-pcre-646110/

Estas delimitando con corchetes, pero no tomas el corchete como parte de la cadena.

Saludos.
  #7 (permalink)  
Antiguo 15/04/2010, 15:35
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Haciendo chat... sustituir :smiley: por imagen

Hola GatorV

Lo he leido y no se donde esta le problema
Osea dranistein me ha dicho que sustituye una cadena por otra, entonces ¿DOonde modifico las reglas?

Un saludo!
__________________
http://www.pkmrpg.es
  #8 (permalink)  
Antiguo 16/04/2010, 04:36
Avatar de danistrein  
Fecha de Ingreso: septiembre-2008
Ubicación: Salta Capital
Mensajes: 550
Antigüedad: 15 años, 7 meses
Puntos: 9
Respuesta: Haciendo chat... sustituir :smiley: por imagen

hola astut, prueba con este código:
Código PHP:
Ver original
  1. $codigo_emoticonos = array("/\[guay\]/is","/\[enfadado\]/is","/\[loco\]/is","/\[risa\]/is","/\[muerto\]/is","/\[sudoroso\]/is","/\[sueño\]/is","/\[vergonzoso\]/is","/\[bonito\]/is","/\[atencion\]/is","/\[amor\]/is","/\[fantasma\]/is","/\[furtivo\]/is","/\[llora\]/is","/\[inocente\]/is","/\[vacio\]/is","/\[angel\]/is","/\[enfadado2\]/is",);
  2. $html_emoticonos =
  3.             array(
  4.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  5.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  6.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  7.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  8.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  9.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  10.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  11.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  12.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  13.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  14.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  15.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  16.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  17.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  18.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  19.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  20.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>",
  21.                 "<img src=\"../../graficos/modulos/chat/emoticonos/guay.gif\" title=\"Guay\" onclick=\"AccionInsertarEmoticono(\'guay\');\"/>"
  22.                 );
  23. $mensaje_texto = preg_replace($codigo_emoticonos, $html_emoticonos, $mensaje['texto']);

te sugiero que leas atentamente el post de Expresiones PCRE .
__________________
Appones.net - www.appones.net
  #9 (permalink)  
Antiguo 16/04/2010, 12:06
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Haciendo chat... sustituir :smiley: por imagen

Hola, lo he leido y aun no se que hacer

Tengo dos arrays, y sustituyo uno por el otro, eso es una de las cosas que hace preg_replace...

nose porque tengo que utilizar expresiones regulares, no podeis explicarmelo mejor vosotros con un ejemplo o algo asi?

Gracias!
__________________
http://www.pkmrpg.es
  #10 (permalink)  
Antiguo 16/04/2010, 12:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Haciendo chat... sustituir :smiley: por imagen

Porque preg_replace funciona con expresiones regulares, si quieres hacerlo con arrays sencillos usa str_replace.

Saludos.
  #11 (permalink)  
Antiguo 16/04/2010, 13:16
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Haciendo chat... sustituir :smiley: por imagen

Muchas gracias!

ya esta
__________________
http://www.pkmrpg.es

Etiquetas: chat, sustituir
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 03:34.