Foros del Web » Programando para Internet » PHP »

Reemplazar texto por Smiley (emoticon)

Estas en el tema de Reemplazar texto por Smiley (emoticon) en el foro de PHP en Foros del Web. Wenas, he buscado en google que para hacer esto --> (remmplazar texto por smiley) en una pagina se debe hacer con la funcion str_replace, pero ...
  #1 (permalink)  
Antiguo 01/12/2006, 19:25
Avatar de F.Y.N.
Colaborador
 
Fecha de Ingreso: noviembre-2006
Ubicación: En un acorde de LA menor
Mensajes: 5.807
Antigüedad: 18 años
Puntos: 116
Sonrisa Reemplazar texto por Smiley (emoticon)

Wenas, he buscado en google que para hacer esto --> (remmplazar texto por smiley) en una pagina se debe hacer con la funcion str_replace, pero yo estoy recien conociendo php, alguien me puede explicar mejor como lo hago para que se me reemplaze estas palabras con X smiley:


Código:
:)
:(
:mwa:
xD 
¬¬
algo vi, pero era muy avanzado para mi, recien estoy aprendiendo a hacer un contador y no soy un experto en php.

gracias de antemano.



Salu1+1

Última edición por F.Y.N.; 25/06/2009 a las 15:42
  #2 (permalink)  
Antiguo 01/12/2006, 20:34
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 19 años, 4 meses
Puntos: 6
Hola,

Basicamente se trata de reemplazar las "caritas" por el codigo html que te permitira visualizar la imagen de la carita deseada. Por ejemplo:

Suponiendo que en la variable $cadena tenes un texto con caritas :) xD :(, etc...

Código PHP:
<?php

$cadena_terminada 
str_replace(":)""<img title=\"Sonrisa\" src=\"imagenes/sonrisa.gif\" alt=\"Sonrisa\" border=\"0\">"$cadena);

?>

Lo que haces con este codigo, es tomar el valor de $cadena, reemplazar las :) por un codigo html con la imagen correspondiente a :) y lo guardas en $cadena_terminada. Si muestras por pantalla $cadena_terminada, teoricamente deberias ver tu texto con la imagen sonriente en lugar de :)


Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #3 (permalink)  
Antiguo 01/12/2006, 23:10
Avatar de F.Y.N.
Colaborador
 
Fecha de Ingreso: noviembre-2006
Ubicación: En un acorde de LA menor
Mensajes: 5.807
Antigüedad: 18 años
Puntos: 116
y donde pongo eso?
después tengo que hacer eso con cada caracter o en esa misma linea los agrego?
Me explicas un poco mas, socio porfa. Como lo dije no conozco casi nada php, nose que son las variables ni como declararlas ni nada.

Salu1+1

Última edición por F.Y.N.; 25/06/2009 a las 15:43
  #4 (permalink)  
Antiguo 02/12/2006, 00:05
 
Fecha de Ingreso: mayo-2006
Ubicación: Argentina (Buenos Aires,CABALLITO)
Mensajes: 331
Antigüedad: 18 años, 6 meses
Puntos: 9
si no sabes nada de php,va a ser verdaderamente dificil que puedas hacer algo...

pero osea,vos tenes por ej un

echo $texto ;

tenes que poner

echo emoticoms($texto);

y antes de esto poner

function emoticoms($texto) {
$texto = str_replace(":)", "<img title=\"Sonrisa\" src=\"imagenes/sonrisa.gif\" alt=\"Sonrisa\" border=\"0\">", $texto);
return $texto ;
};

entonces cada ves que en la cadena aparesca un :) se reemplazara por la imagen.

si tenes alguna duda o no sabes la variable del texto copia y pega el codigo de tu script aca.
saludos
  #5 (permalink)  
Antiguo 02/12/2006, 10:57
Avatar de F.Y.N.
Colaborador
 
Fecha de Ingreso: noviembre-2006
Ubicación: En un acorde de LA menor
Mensajes: 5.807
Antigüedad: 18 años
Puntos: 116
por ejemplo si tengo X texto asi:


xxxxxxxx xxxxxxxxxxxx xxxxx xxx :) xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxx, xxxxxx xxxxxx x xxxxxxxxxxxxxxxxxx xxxx :mwa: x
xx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxx x x x x x x x x x :( x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx :)

Que tengo que hacer?, sorry si soy demasiado noob, pero quiero aprender y no andar haciendo copy & paste.

Lo otro, para que sirve echo? y como se usa, parece que imprime texto, pero donde le digo que texto imprima?

Última edición por F.Y.N.; 25/06/2009 a las 15:43
  #6 (permalink)  
Antiguo 02/12/2006, 11:13
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 19 años, 4 meses
Puntos: 6
Cita:
Iniciado por F.Y.N. Ver Mensaje
por ejemplo si tengo X texto asi:


xxxxxxxx xxxxxxxxxxxx xxxxx xxx :) xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxx, xxxxxx xxxxxx x xxxxxxxxxxxxxxxxxx xxxx :mwa: x
xx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxx x x x x x x x x x :( x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx :)

Que tengo que hacer?, sorry si soy demasiado noob, pero quiero aprender y no andar haciendo copy & paste.

Lo otro, para que sirve echo? y como se usa, parece que imprime texto, pero donde le digo que texto imprima?
Amigo, lee un tutorial basico para comenzar con php... aprende a usar echo y luego sigue con los emoticons

tutorial php


Saludos
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #7 (permalink)  
Antiguo 02/12/2006, 13:38
Avatar de F.Y.N.
Colaborador
 
Fecha de Ingreso: noviembre-2006
Ubicación: En un acorde de LA menor
Mensajes: 5.807
Antigüedad: 18 años
Puntos: 116
ok, gracias en todo kso.


Salu1+1

Última edición por F.Y.N.; 25/06/2009 a las 15:43
  #8 (permalink)  
Antiguo 02/12/2006, 13:59
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 9 meses
Puntos: 20
No cuesta nada explicarlo....

Supongamos que tu texto es este:
Cita:
xxxxxxxx xxxxxxxxxxxx xxxxx xxx :) xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxx, xxxxxx xxxxxx x xxxxxxxxxxxxxxxxxx xxxx :mwa: x
xx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxx x x x x x x x x x :( x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx :)
Deduzco que ya sabes cómo obtenerlo cuando lo manda el usuario o tú mismo...

En una variable, tendríamos esto:

Código PHP:
$texto "xxxxxxxx xxxxxxxxxxxx xxxxx xxx :) xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxx, xxxxxx xxxxxx x xxxxxxxxxxxxxxxxxx xxxx :mwa: x
xx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxx x x x x x x x x x :( x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx :)"

Ahora queremos que siempre donde haya un :) lo reemplaze por una imagen (un emoticono)

Código PHP:
$texto str_replace (":)""<img src='carita.gif'>"$texto); 
Cuando hagamos echo $texto; mostrará el texto con los ":)" cambiados por caritas.

Más sobre la función str_replace() en www.php.net/str_replace
  #9 (permalink)  
Antiguo 02/12/2006, 14:01
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 9 meses
Puntos: 20
Si quisieras poner varias caritas, pues repites el proceso varias veces:

Código PHP:
$texto "xxxxxxxx xxxxxxxxxxxx xxxxx xxx :) xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxx, xxxxxx xxxxxx x xxxxxxxxxxxxxxxxxx xxxx :mwa: x
xx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxx x x x x x x x x x :( x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx :)"
;  

$texto str_replace (":)""<img src='carita_feliz.gif'>"$texto);  
$texto str_replace (":(""<img src='carita_triste.gif'>"$texto);  
$texto str_replace (":O""<img src='carita_sorprendido.gif'>"$texto);  

echo 
$texto//Mostrara el texto CON CARITAS 
Suerte
  #10 (permalink)  
Antiguo 02/12/2006, 15:03
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 9 meses
Puntos: 20
Ah, no olvides que esto se hace AL LEER el mensaje Y NUNCA AL ENVIARLO.

Si lo quieres hacer en forma de función...

Código PHP:
function mostrar_caritas($texto) {

$texto str_replace (":)""<img src='carita_feliz.gif'>"$texto);  
$texto str_replace (":(""<img src='carita_triste.gif'>"$texto);  
$texto str_replace (":O""<img src='carita_sorprendido.gif'>"$texto);  

return 
$texto;
}

echo 
mostrar_caritas($texto); 
Suerte
  #11 (permalink)  
Antiguo 02/12/2006, 15:26
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 19 años, 4 meses
Puntos: 6
Cita:
Iniciado por david_M_G Ver Mensaje
Deduzco que ya sabes cómo obtenerlo cuando lo manda el usuario o tú mismo...
Lo dudo, no sabia para que servia echo ni como se usaba. Y si, era facil explicarlo, ojala lo haya entendido.


Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #12 (permalink)  
Antiguo 02/12/2006, 15:41
Avatar de F.Y.N.
Colaborador
 
Fecha de Ingreso: noviembre-2006
Ubicación: En un acorde de LA menor
Mensajes: 5.807
Antigüedad: 18 años
Puntos: 116
muxas gracias david, me funciono, pero aun asi estoy leyendo un manual de php5 en desarroloweb,com , vale man. Lo que si no entendi a que te referias con tu ultimo post, eso de al LEER y no al ENVIAR.

Gracias.


Lo otro, como lo hago para que se me reemplazen los mismos caracteres pero en distintos textos. Ejemplo si en otro lado pongo echo $texto2; como hago para que en ese texto tambien se me reemplazen los smileys sin hacer lo de nuevo el str_replace?

$texto, $texto2 = str_replace
algo asi o no? cual es la manera correcta para no tener que hacerlo con cada $texto que ponga? (como en los foros, que automaticamente cambia el texto de cada post.)


Salu1+1

Última edición por F.Y.N.; 25/06/2009 a las 15:44
  #13 (permalink)  
Antiguo 02/12/2006, 16:42
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 9 meses
Puntos: 20
Lo de LEER y no al ENVIAR quiere decir que..... supongamos que utilizas base de datos. Pues en el momento de guardar los datos, lo guardas normal, es una vez al sacar esos datos para mostrárselos al usuario cuando tienes que hacer dicho reemplazo. Si lo guardas en un .txt también, si lo pasas por un formulario también... siempre al memorizar el dato lo memorizas normal..

es decir: "Hola me llamo David ;)"

Y en el momento que se lo tengas que mostrar al usuario, pues haces ese proceso de str_replace() para que él vea:

"Hola me llamo David "

------------

Para aplicarlo a diversas variables lo más cómodo es hacer una función. Una función sirve para programar una serie de órdenes o acciones que tenga que hacer sobre una variable. Así es más fácil de aplicar.

Ejemplo práctico

Hacemos una función:

Código PHP:
function mostrar_caritas($texto) {

$texto str_replace (":)""<img src='carita_feliz.gif'>"$texto);  
$texto str_replace (":(""<img src='carita_triste.gif'>"$texto);  
$texto str_replace (":O""<img src='carita_sorprendido.gif'>"$texto);  

return 
$texto;

Ahora cada vez que hagamos mostrar_caritas() sobre algo, pues ya hace esos comandos que reemplazan unos símbolos por un smiley.

Código PHP:
echo mostrar_caritas($texto);
echo 
mostrar_caritas($texto2); 
suerte
  #14 (permalink)  
Antiguo 02/12/2006, 17:23
Avatar de F.Y.N.
Colaborador
 
Fecha de Ingreso: noviembre-2006
Ubicación: En un acorde de LA menor
Mensajes: 5.807
Antigüedad: 18 años
Puntos: 116
muxas gracias david, te pasaste.

Salu1+1

Última edición por F.Y.N.; 25/06/2009 a las 15:44
  #15 (permalink)  
Antiguo 24/02/2007, 04:25
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Reemplazar texto por Smiley (emoticon)

Hola, justo estaba buscando esto, una pregunta, como podria colocar del textarea los emoticons para que los usuario utilice el que quiera y aparezca asi :) vamos como aparecen en los blogs.
Saludos
  #16 (permalink)  
Antiguo 24/02/2007, 13:26
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 10 meses
Puntos: 9
Re: Reemplazar texto por Smiley (emoticon)

pakillo -> Javascript, php no tiene na que ver....


PD: Alguien se pregunto si F.Y.N. sabe como guardar la info de un formulario? :s
  #17 (permalink)  
Antiguo 02/03/2007, 21:27
Avatar de F.Y.N.
Colaborador
 
Fecha de Ingreso: noviembre-2006
Ubicación: En un acorde de LA menor
Mensajes: 5.807
Antigüedad: 18 años
Puntos: 116
Re: Reemplazar texto por Smiley (emoticon)

Cita:
Iniciado por Nefertiter Ver Mensaje
pakillo -> Javascript, php no tiene na que ver....


PD: Alguien se pregunto si F.Y.N. sabe como guardar la info de un formulario? :s
Te referi a usar $_GET? +-
  #18 (permalink)  
Antiguo 03/03/2007, 12:41
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 10 meses
Puntos: 9
Re: Reemplazar texto por Smiley (emoticon)

me referia a un medio para guardar datos: Archivos, Bases de Datos...
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 22:22.