Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2008
Avatar de gabrielflowers
gabrielflowers gabrielflowers is offline
Miembro
 
Registrado: jul 2007
Posts: 88
Poder: 17
gabrielflowers Va por buen camino
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???
__________________
"valor a pesar de toda debilidad del cuerpo, el espiritu debe triunfar"
Responder Con Cita
  #2  
Antiguo 14-04-2008
Avatar de axesys
axesys axesys is offline
Miembro
 
Registrado: ene 2007
Ubicación: Los Mochis Sinaloa
Posts: 208
Poder: 18
axesys Va por buen camino
Puedes hacerlo con el tp lex yacc

http://www.musikwissenschaft.uni-mainz.de/~ag/tply/
Responder Con Cita
  #3  
Antiguo 14-04-2008
Avatar de gabrielflowers
gabrielflowers gabrielflowers is offline
Miembro
 
Registrado: jul 2007
Posts: 88
Poder: 17
gabrielflowers Va por buen camino
para axesys:bueno tu respuesta me parece poco clara, yo mas bien buscaba alguna funcion de php que me haga esto, o alguna forma hacerlo?, pero siempre bajo el entorno php
__________________
"valor a pesar de toda debilidad del cuerpo, el espiritu debe triunfar"
Responder Con Cita
  #4  
Antiguo 14-04-2008
Avatar de axesys
axesys axesys is offline
Miembro
 
Registrado: ene 2007
Ubicación: Los Mochis Sinaloa
Posts: 208
Poder: 18
axesys Va por buen camino
Perdon no me fije que era para php
Responder Con Cita
  #5  
Antiguo 14-04-2008
Avatar de gabrielflowers
gabrielflowers gabrielflowers is offline
Miembro
 
Registrado: jul 2007
Posts: 88
Poder: 17
gabrielflowers Va por buen camino
alguna otra ayuda?
__________________
"valor a pesar de toda debilidad del cuerpo, el espiritu debe triunfar"
Responder Con Cita
  #6  
Antiguo 14-04-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Puede que la función "str_replace()" te sea suficiente. Por otro lado, comprenderás que decir:

Cita:
Empezado por Gabriel
(...) he probado con ereg_replace() y preg_replace pero no me funcionan, (...)
Es no decir nada. ¿Qué significa que no te funcionan? Si quieres ayuda... ayuda a que te ayuden...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 14-04-2008
Avatar de gabrielflowers
gabrielflowers gabrielflowers is offline
Miembro
 
Registrado: jul 2007
Posts: 88
Poder: 17
gabrielflowers Va por buen camino
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);//chars delimitadores del texto a buscar
    
$lang_content=file_get_contents($lang_file);//contenido 
    
$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 
    
echo $lang_content2

, 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?
__________________
"valor a pesar de toda debilidad del cuerpo, el espiritu debe triunfar"
Responder Con Cita
  #8  
Antiguo 14-04-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Estás dando a entender que lo que fallan son las funciones de PHP, cuando lo más normal es pensar que lo que está equivocado es la expresión regular. O bien que, efectivamente, lo que buscas no está donde lo buscas. No creo que las funciones de PHP que mencionas no estén "probadas". Al contrario, creo que están muy probadas. Me temo que tendrás que afinar la expresión regular en cuestión o buscar el problema en otro sitio, no en las funciones de PHP.

PD. Tal vez me equivoque y hallas descubierto un "bug" en PHP, pero, me permito dudarlo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 14-04-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
De php no se pero me parece que esta funcion reemplaza:
Código PHP:
Some muddling through docs and many obscenties later, I produced the following, which expands escape sequences in an existing string with NO interpolation.

<?php

// where we do all our magic
function expand_escape($string) {
    return 
preg_replace_callback(
        
'/\\\([nrtvf]|[0-7]{1,3}|[0-9A-Fa-f]{1,2})?/',
        
create_function(
            
'$matches',
            
'return ($matches[0] == "\\\\") ? "" : eval( sprintf(\'return "%s";\', $matches[0]) );'
        
),
        
$string
    
);
}

// a string to test, and show the before and after
$before 'Quantity:\t500\nPrice:\t$5.25 each';
$after expand_escape($before);
var_dump($before$after);

/* Outputs:
string(34) "Quantity:\t500\nPrice:\t$5.25 each"
string(31) "Quantity:    500
Price:    $5.25 each"
*/

?>
Saludos
Responder Con Cita
  #10  
Antiguo 14-04-2008
Avatar de gabrielflowers
gabrielflowers gabrielflowers is offline
Miembro
 
Registrado: jul 2007
Posts: 88
Poder: 17
gabrielflowers Va por buen camino
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
__________________
"valor a pesar de toda debilidad del cuerpo, el espiritu debe triunfar"

Última edición por gabrielflowers fecha: 16-04-2008 a las 00:35:58.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda con expresiones regulares Lerak Varios 1 13-04-2008 01:05:41
Buscador de código que soporta expresiones regulares Al González Noticias 4 04-11-2007 18:17:29
Expresiones Regulares (¿o Regular Expressions?) Ñuño Martínez Varios 12 13-10-2006 22:36:40
expresiones regulares en sql jonmendi SQL 1 24-12-2004 15:28:39
Expresiones regulares roman Varios 1 18-08-2003 17:08:37


La franja horaria es GMT +2. Ahora son las 12:53:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi