Foros del Web » Programando para Internet » PHP »

Duda con ereg_replace

Estas en el tema de Duda con ereg_replace en el foro de PHP en Foros del Web. Hola: Estoy tratando de desarrollar algun script que me permita cambiar las caritas por los equivalentes en texto por ejemplo :< pero el problema es ...
  #1 (permalink)  
Antiguo 04/02/2004, 14:30
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
Duda con ereg_replace

Hola:
Estoy tratando de desarrollar algun script que me permita cambiar las caritas por los equivalentes en texto por ejemplo :< pero el problema es que no se como poner todas las caritas pues tengo mas de 25 en el Libro de Visitas. Lo que he hecho es esto:
Código PHP:
 function strreplacewithsmiles($smile,$array){
  
$smile "saludos[:)]";
  
$smile ereg_replace("\[:)\]""<img src=\"images/lvisitas/smile_01.gif\">"$smile);
  echo 
$smile ;

me dijeron aqui que debia repetir smile y renombrarlo a smile1, smile2 pero eso sería algo engorroso pues ahora tengo 25 caritas pero si tuviera 100? Si alguien ha hecho algo semejante o posee el código para hacer esto que me ayude.

Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 04/02/2004, 15:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues usa arrays .. que para eso están:

Un array con tus smiles y link que corresponda (nombre de la imagen sólo) .. un bucle para recorrer el array y aplicar con cada elemento tu función ereg_replace()

Código PHP:
$cadena="hola [:)], estoy triste [:(]";

$smiles=array("[:)]"=>"riendose.gif","[:(]"=>"triste.gif");

foreach (
$smiles as $smile => $imagen){
   
$cadena ereg_replace($smile"<img src=\"images/lvisitas/$imagen\">"$cadena);
}

echo 
$cadena
Pero, ahora que recuerdo .. creo que a un ereg_replace() se le puede pasar un array completo y así evitar el bucle .. Revisa la documentación oficial de esa función de expresiones regulares.

(fijate de donde sacastes esa función .. por qué pareciera que originalmente esa función trabajase como 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.
  #3 (permalink)  
Antiguo 04/02/2004, 23: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
y que es la ...

Que cosa es la variable $imagen en este caso un array que contiene algo? No entendi bien esa parte
Salu2
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 05/02/2004, 00:00
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Si conoces la sintaxis del bucle "foreach" ...
Lo que hace es leer una posición del array $smiles en cada pasada y guardar su clave en la variable $smile y su valor en la variable $imagen...

O sea que en este caso la primera pasada hará la siguiente asignación:
$smile = "[:)]";
$imagen = "riendose.gif";
.. que corresponeden a la primera posición del aray "$smiles"

Y ejecutará el ereg_replace.

Y así sucesivamente con todas las posiciones del array...

Saludos
  #5 (permalink)  
Antiguo 11/04/2004, 23:56
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
Mira Cluster

He hecho lo que me explicastes del ciclo foreach pero me da este error:
Cita:
Warning: ereg_replace(): REG_EPAREN: in c:\archivos de programa\apache group\apache\htdocs\marxismo\lvisitas.php on line 225
el código es este:
Código PHP:
$comentarios $row['comentarios'];
         
$arrsmiles = array(":-O"=>"smile01.gif",":-p"=>"smile02.gif",":-&"=>"smile03.gif",":::"=>"smile04.gif",
                            
"8-)"=>"smile05.gif",":-|"=>"smile06.gif",":-o"=>"smile07.gif",":-t"=>"smile08.gif",
                            
":-)"=>"smile09.gif",":-("=>"smile010.gif",":¨-("=>"smile011.gif",":heart:"=>"smile012.gif",
                            
":bheart:"=>"smile013.gif",":star:"=>"smile014.gif",":time:"=>"smile015.gif",":music:"=>"smile016.gif",
                            
":movie:"=>"smile017.gif","(-)]"=>"smile018.gif",":kiss:"=>"smile019.gif",":kake:"=>"smile020.gif",
                            
":-O"=>"smile021.gif");
         foreach(
$arrsmiles as $smile=>$imagen){
         
//esta es la línea 218
          
$resultado ereg_replace($smile,"<img src=\"img/lvisitas/smiles/$imagen\">",$resultado);
          echo 
$resultado
ahora cual es el error? A otra cosa esto esta dentro de un ciclo while de la siguiente forma:
Código PHP:
while($row mysql_fetch_assoc($consulta)){ acciones 
por lo que me repite el error 3 veces de esta manera
Cita:
Warning: ereg_replace(): REG_EMPTY: in c:\archivos de programa\apache group\apache\htdocs\marxismo\lvisitas.php on line 218

Warning: ereg_replace(): REG_EPAREN: in c:\archivos de programa\apache group\apache\htdocs\marxismo\lvisitas.php on line 218

Warning: ereg_replace(): REG_EPAREN: in c:\archivos de programa\apache group\apache\htdocs\marxismo\lvisitas.php on line 218
Salu2
PD: Disculpen si jodo demasiado pero me gusta aprender para luego poder enseñar a otros.

Uppss !!! He tenido que sustituir algunas caritas por este código pues se confundían con las de FDW. Las caritas que se confundían son estas: :-p , , y y me ponia el link hacia las imagenes de FDW de esta forma "<img src="/images/smilies/wink.gif" border="0" alt="">=>"smile04.gif"
__________________
Ing. Reynier Pérez Mira
  #6 (permalink)  
Antiguo 12/04/2004, 09:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm .. para el ejemplo mejor usa str_replace() en lugar de erg_replace() .. parece que hay problemas con los patrones (o como los está intentando asumir .. y yo de EXP Reg. bien pco sé ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 12:55.