Foros del Web » Programando para Internet » PHP »

como buscar(con expresiones regulares) en una cadena, y reemplazarlo?

Estas en el tema de como buscar(con expresiones regulares) en una cadena, y reemplazarlo? en el foro de PHP en Foros del Web. hola a todos, me encuentro con este problema, pues veran el contexto completo es este: primero estoy leyendo de un archivo txt con file_get_contents();,y guardo ...
  #1 (permalink)  
Antiguo 14/04/2008, 09:35
Avatar de gabrielflowers  
Fecha de Ingreso: julio-2007
Ubicación: Santa Cruz de la Sierra
Mensajes: 187
Antigüedad: 17 años, 4 meses
Puntos: 3
como buscar(con expresiones regulares) en una cadena, y reemplazarlo?

hola a todos, me encuentro con este problema, pues veran el contexto completo es este: primero estoy leyendo de un archivo txt con file_get_contents();,y guardo el contenido del archivo en una variable $contenido(que seria un string), ahora mi problema es buscar(con expresiones regulares) en la cadena $contenido una frase y reemplazarla por otra, he probado con ereg_replace() y preg_replace() pero no me funcionan, algun consejo???
  #2 (permalink)  
Antiguo 14/04/2008, 09:51
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: como buscar(con expresiones regulares) en una cadena, y reemplazarlo?

Porqué no pones el código a ver q problema pueda tener?
  #3 (permalink)  
Antiguo 14/04/2008, 10:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Re: como buscar(con expresiones regulares) en una cadena, y reemplazarlo?

si... pon las expresiones ke usas, con el codigo acompañando... haber si hay algo mal
  #4 (permalink)  
Antiguo 14/04/2008, 10:16
Avatar de gabrielflowers  
Fecha de Ingreso: julio-2007
Ubicación: Santa Cruz de la Sierra
Mensajes: 187
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: como buscar(con expresiones regulares) en una cadena, y reemplazarlo?

bueno a ver este el codigo con busco con mi expresion regular, en el contenido de un archivo que lo guardo en $lang_content

Código PHP:
$path=$path.'lang/';
$ext='.txt';
$sep='<==>';
$lang_file=$path.$lang.$ext;//es el directorio del archivo
if(file_exists($lang_file))
{
   
$nl=chr(13).chr(10);//caracteres delimitadores del texto a buscar
    
$lang_content=file_get_contents($lang_file);//contenido del archivo

    
$lang_content2=ereg_replace($palabra.' +'.$sep.' +(.*)'.$nl,$palabra.' <=> '.$traduccion.$nl,$lang_content);
        
    
$f=fopen($lang_file,'w');//abre el archivo para escritura
    
fwrite($f,$lang_content2);//escribir en el archivo
    
fclose($f);//cerramos el archivo

, pero la funcion ereg_replace no me pilla nada con la expresion regular que le puse(que se que no esta mal), y por tanto no me reemplaza nada, tambien probe con preg_replace y tampoco me funciona, alguien conoce alguna otra funcion (probada) que busque en una cadena con expresiones regulares y lo reemplace, o por ultimo que busque en un array con expresiones regulares? y me devuelva la clave de aquel que coincide con la expresion regular?

Última edición por gabrielflowers; 15/04/2008 a las 16:42
  #5 (permalink)  
Antiguo 14/04/2008, 10:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Re: como buscar(con expresiones regulares) en una cadena, y reemplazarlo?

weno... estas funciones son "probadas" y de echo estan diseñadas para ello, si no funciona es por el mal uso ke se les da... de por si, son funciones geniales!!

ke imprime $lang_content2 ???
puedes explikar ke kieres hacer con tu expresion en concreto... ???
  #6 (permalink)  
Antiguo 14/04/2008, 11:20
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: como buscar(con expresiones regulares) en una cadena, y reemplazarlo?

Si, a mi tampoco me ruló.
¿Q quieres hacer con ella?
  #7 (permalink)  
Antiguo 15/04/2008, 16:36
Avatar de gabrielflowers  
Fecha de Ingreso: julio-2007
Ubicación: Santa Cruz de la Sierra
Mensajes: 187
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: como buscar(con expresiones regulares) en una cadena, y reemplazarlo?

haciendo muchas pruebas la funcion preg_replace() me resulto efectiva para lo que buscaba, evidentemente esta funcion busca(con expresiones regulares) en una cadena y reemplaza, tal como plantee, mas sin embargo la funcion ereg_replace() tiene un comportamiento anormal (quizas por que trabaja con el estandar POSIX Extendido)

y pongo el codigo como referencia para quien lo necesite:
Código PHP:
$path=$path.'lang/'
 
$ext='.txt'
 
$sep='<==>'
 
$lang_file=$path.$lang.$ext;//es el directorio del archivo 
if(file_exists($lang_file))//si el archivo existe

  
$nl=chr(13).chr(10);//caracteres delimitadores del texto a buscar 
  
$lang_content=file_get_contents($lang_file);//contenido del archivo 
  
$lang_content=preg_replace('/'.$palabra.' +'.$sep.' +(.*)'.$nl.'/',$palabra.' <==> '.$traduccion.$nl,$lang_content); 
  
$f=fopen($lang_file,'w');//abre el archivo para escritura 
  
fwrite($f,$lang_content);//escribir en el archivo 
  
fclose($f);//cerramos el archivo 
 
echo 'modificado!';
 } 
gracias a todos, saludos
  #8 (permalink)  
Antiguo 15/04/2008, 21:38
 
Fecha de Ingreso: marzo-2008
Ubicación: SanTelmo City
Mensajes: 12
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: como buscar(con expresiones regulares) en una cadena, y reemplazarlo?

Como estas trabajando con POSIX usar ereg_replace()
por lo tanto la linea de la expresión regular seria asi

Código PHP:

$lang_content
=ereg_replace('/'.$palabra.' +'.$sep.' +(.*)'.$nl.'/',$palabra.' <==> '.$traduccion.$nl,$lang_content); 
En un post de mas arriba habias llamado a la funcion, pero los parametros creo que no eran correctos

Espero que te sea util, saludos
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:52.