Foros del Web » Programando para Internet » PHP »

De nuevo con ereg_replace

Estas en el tema de De nuevo con ereg_replace en el foro de PHP en Foros del Web. La cosa es que quiero hacer lo mismo que hacen aquí al darle click a una carita o smile y es que cuando el usuario ...
  #1 (permalink)  
Antiguo 04/03/2004, 08:07
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
De nuevo con ereg_replace

La cosa es que quiero hacer lo mismo que hacen aquí al darle click a una carita o smile y es que cuando el usuario me de click ponerle por ejemplo el equivalente en texto pero a la hora de sacarlo de la BD vincularlo con las imagenes contenidas en el directorio y mostrar la que corresponda a ese texto. Me hago entender. Si alguien lo ha hecho por favor que me ayude. Lo que se va a insertar en la BD es la direccion de la imagen por eso digo lo de vincular BD con el directorio.

Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 04/03/2004, 10:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Para un "smile" con un str_replace() te sobra ... para la parte puramente PHP .. El hecho de que pulses sobre el icono en concreto y en el textarea se represente con algún còdigo es taréa de javascript integramente.

Ejemplo (PHP) ..

Si tu rutina javascript incrusta en tu textarea que posteriormente almacenas en tu BD o donde corresponda un código tal que:

[:)]

En PHP tan sólo tienes que aplicar un str_replace() tipo

Código PHP:
<?
$mensaje
="Hola estoy [:)]";
$mensaje=str_replace($mensaje,'[:)]','<img src="feliz.gif">');
echo 
$mensaje;
?>
Esto es muy simple .. pero es la base .. si tienes más smiles puedes usar arrays (asociativos tipo mile=>imagen) y bucles para sustituir todos los smiles (codigos) que aparezcan en tu mensaje (cadena/string) (tambien creo que puedes pasarle un array a str_replace() si mal no recuerdo)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 04/03/2004, 10:33
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Eso es lo ...

Eso es lo que quiero en realidad pero no se como lograrlo. Ni idea tengo.

Salu2
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 04/03/2004, 11:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Reynier .. pues ahí tienes un ejemplo práctico . lo probastes? .. fuistes a PHP.net a ver la documentación de esa función? .. o que problema tienes ..?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 13/03/2004, 13:35
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Y cuando ...

Y cuando sea mas de una imagen como lo hago?, pues mi Libro de Visitas contiene como 20 imagenes para poner. Ha lo de JavaScript tampoco tengo idea de como hacerlo, es decir, que cuando de click me ponga el equivalente de la carita pero en formato texto en el area de firma al igual que lo hace FDW??
__________________
Ing. Reynier Pérez Mira
  #6 (permalink)  
Antiguo 14/03/2004, 18:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo de javascript ... preguntalo en el foro de javascript.

Si te fijas .. si el ejemplo simple es para un smile .. usa más tantos como tengas .. eso sería la solución "simple" de observar como se comporta ese código .. pero si quires hacerlo más "limpio" usa un array asociativo para contener tus smile y archivo que corresponde (gráfico .tal) y lo lees con un bucle aplicando el str_replace() a cada elemento del array .. (incluso creo recordar que str_replace() acepta un array como entrada).

Y vuelvo a insistir .... has probado hacer algo de lo que te comento?.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 14/03/2004, 21:01
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Si he intentado

Cluster he intentado pero no me sale lo que quiero hacer. Ahora lo que me dices de array asociativo me lo podrías explicar un poco mejor y si no es mucho pedir poner un ejemplo pues cuando trabajo con arrays lo hago de esta manera:
Código PHP:
 $vararr = array("Valor1","Valor2","etc"); 
Salu2
__________________
Ing. Reynier Pérez Mira
  #8 (permalink)  
Antiguo 15/03/2004, 06:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Reynier .. no quiero resultar pedante, pesado o "sobrado" .. pero si se habla de un concepto como son los arrays y lo desconoces .. creo que sería recomendable ir tomando base de eso mismo para luego desarrollar tu aplicación ... en tu caso ese tema de "smiles" que se basa en arrays asociativos (una de tantas soluciones).

http://www.php.net/manual/en/language.types.array.php

Los arrays asociativos son:

Código PHP:
$array['indice']="valor"
o bien .. también se pueden definir como:

Código PHP:
$array=array('indice'=>'valor','indice2'=>'valor2'); 
Se suele usar para recorrer este tipo de arrays asociativos los bucles tipo foreach() que están diseñados para tal fin y comodidad tuya.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 15/03/2004 a las 06:52
  #9 (permalink)  
Antiguo 15/03/2004, 15:03
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Cluster ya hice lo de JavaScript

Cluster amigo:
Ya he logrado hacer lo de JavaScript ahora el problema está en PHP. Estuve leyendo lo que me indicaste pero no entendi mucho.
Me imagino que sea de esta forma así:

$array = array('aqui me imagino que vaya el equivalente de la carita'=>'aqui la direccion de la imagen que pertence a esa carita')

pero todo eso está contenido dentro del mensaje, entonces, como hago para mostrar el mensaje y además mostrar las caritas que el usuario agregó al mismo ?
__________________
Ing. Reynier Pérez Mira
  #10 (permalink)  
Antiguo 15/03/2004, 15:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El hecho de tener el array asociativo con tus N "caritas" que relacionan a N archivos (nombres) de imagen .. es justamente para que puedas recorrer ese array en un bucle y a cada pasada aplicar el str_replace() a tu cadena original (tu mensaje) .. así en la primera pasada del bucle pondrá el código de la imagen del [:)] .. en la segunda el [:(] .. en la tercera .. el [:nose:] y así sucesivamente ... El bucle que mejor va para estas cosas es el foreach().

Te vendría bien practicar el tema este para manejarte con arrays .... aunque luego veras que con expresiones regulares o aprovechando mejor el str_replace() se pueden hasta evitar estos bucles que hago mención.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 15/03/2004, 15:22
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Bueno ,....

Esto es lo que he hecho no se si será lo correcto:
Código PHP:
 $arraycaritas = array(':0'=>'smile01.gif',':d'=>'smile02.gif',':&'=>'smile03.gif',':('=>'smile04.gif',';)'=>'smile05.gif','oo'=>'smile06.gif',
                                                
':%'=>'smile07.gif',':D'=>'smile08.gif',':o'=>'smile09.gif',':X'=>'smile010.gif',':))'=>'smile011.gif',':()'=>'smile012.gif',
                                               
'(H)'=>'smile013.gif','(BH)'=>'smile014.gif','(T)'=>'smile015.gif','(K)'=>'smile016.gif','(S)'=>'smile017.gif','(G)'=>'smile018.gif',
                                               
'(C)'=>'smile019.gif','(KAKE)'=>'smile020.gif','(EM)'=>'smile021.gif',); 
pero no tengo ni idea de como hacer el str_replace() con esos elementos del array.

Salu2
__________________
Ing. Reynier Pérez Mira
  #12 (permalink)  
Antiguo 15/03/2004, 15:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok, ya tienes tu array asocitavia .. te comenté que el mejor bucle para leer ese array es uno de tipo foreach() .. ya vistes como se usa ..?

Bueno .. como veras debes intentarlo .. te estoy dando todas las guías .. Sólo me falta hacertelo .. ¬¬

Te insisto y recomiendo por tu bien aprender hacerlo como te comento para que sepas manejarte con arrays .. Pero, a nivel práctico y para aprovechar mejor PHP al final acabaras usando algo tipo:

Código PHP:
<?
$array_smiles
=array(":)",":(");
$array_imagenes=array("<img src=\"feliz.gif\">","<img src=\"triste.gif\">");

$mensaje=str_replace($array_smiles,$array_imagenes,$mensaje);
?>
Esto es lo que te comenté que a str_replace() le puedes pasar dos arrays ... una con los elementos que ha de encontrar y otros por los que debe sustituirlos (1 a 1) ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 15/03/2004, 15:36
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Ahora ...

Ya entiendo mas o menos lo que me quieres decir de esta manera. Ahora mi duda es el str_replace desde donde lo haria pues me parece que debo recorrer todo el contenido del comentario que hizo el usuario en busca de una o más caritas. Lo del ciclo foreach me vas a disculpar pues soy un poco bruto y programo en C++ y ese ciclo no existe ahi. Ahora me han dicho que debo programar en .NET y creo que ahi si viene implementado. Estuve viendo los ejemplos de la documentación oficial de PHP y lo que no entiendo de este en particular es:
Código PHP:
<?php 
$arr 
= array("one""two""three"); 
reset ($arr); 
while (list(, 
$value) = each ($arr)) { 
   echo 
"Value: $value<br>\n"


foreach (
$arr as $value) { 
   echo 
"Value: $value<br>\n"

?>
que cosa es $arr y que cosa es $value ?

Salu2 y disculpa si molesto tanto
__________________
Ing. Reynier Pérez Mira
  #14 (permalink)  
Antiguo 15/03/2004, 15:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En los ejemplos que pusistes .. $arr es el array que ahí defines:

$arr = array("one", "two", "three");

Y $value .. va tomando uno de esos valores de tu array (one,two,three ...) a cada pasada que dá el bucle desde el primer elmento del array hasta el final del mismo (el bucle foreach se encarga de ver en que posición del array está para parar las iteracciones del bucle .. por eso es tan "cómodo" usarlo ya que no tienes que andar contanto el nº de elementos como por ejemplo lo harías en un bucle for() clásico).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #15 (permalink)  
Antiguo 15/03/2004, 19:58
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Gracias

Gracias Cluster ahora ya entendi como funciona el proceso.
Salu2
__________________
Ing. Reynier Pérez Mira
  #16 (permalink)  
Antiguo 20/03/2004, 17:08
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Miren lo que ...

Esto es lo que he hecho según he entendido pero no me funciona:

Código PHP:
$arraycaritas = array(':0'=>'smile01.gif',':d'=>'smile02.gif',':&'=>'smile03.gif',':('=>'smile04.gif',';)'=>'smile05.gif','oo'=>'smile06.gif',
                                                
':%'=>'smile07.gif',':D'=>'smile08.gif',':o'=>'smile09.gif',':X'=>'smile010.gif',':))'=>'smile011.gif',':()'=>'smile012.gif',
                                               
'(H)'=>'smile013.gif','(BH)'=>'smile014.gif','(T)'=>'smile015.gif','(K)'=>'smile016.gif','(S)'=>'smile017.gif','(G)'=>'smile018.gif',
                                               
'(C)'=>'smile019.gif','(KAKE)'=>'smile020.gif','(EM)'=>'smile021.gif');
                         
$valor $row['comentarios'];
                         foreach(
$arraycaritas as $clave=>$valor){
                            
$texto str_replace($valor"<img src=\"img/lvisitas/smiles/$clave.gif\">"$texto);
                         }
echo 
$texto
que hago mal ahora?
__________________
Ing. Reynier Pérez Mira

Última edición por Reynier; 20/03/2004 a las 17:09
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 02:14.