Foros del Web » Programando para Internet » PHP »

preg_replace no reemplaza con funciones

Estas en el tema de preg_replace no reemplaza con funciones en el foro de PHP en Foros del Web. Tengo estas funciones dentro de una clase php: Código PHP:      public function  Test ( $key ) {         return  $this -> Language [ $key ];              } ...
  #1 (permalink)  
Antiguo 15/09/2013, 13:15
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 3 meses
Puntos: 9
preg_replace no reemplaza con funciones

Tengo estas funciones dentro de una clase php:

Código PHP:
    public function Test($key) {

        return 
$this->Language[$key];
        
    }
    
    public function 
Parse($content)
    {    
        
$this->Template preg_replace('/{(.*?)}/is'$this->Test('\1'), "{test} texto2 text3 texto4");
        echo 
$this->Template;
    } 
Pasa el string "test" por la función Test(), el problema es que al tratar de imprimir una variable definida más arriba como $this->Language['test'] no la imprime. Pero si manualmente pongo return $this->Language['test'] si lo hace.

¿Que puede ser? Debe ser algo del preg_replace, pero no encuentro solución
  #2 (permalink)  
Antiguo 15/09/2013, 15:59
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 9 meses
Puntos: 55
Respuesta: preg_replace no reemplaza con funciones

Hola, lo que quieres hacer es utilizar la funcion como callback, para ello debes usar
preg-replace-callback

http://www.php.net/manual/en/functio...e-callback.php

Ojo, solo funciona a partir de php 5.4; para que sea más general, deberias
1.- extraer el contenido del patron.
2.- extraer el valor del atributo y guardarlo en una variable
3.- hacer el reemplazo.

Saludos
  #3 (permalink)  
Antiguo 16/09/2013, 09:02
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: preg_replace no reemplaza con funciones

Cita:
Iniciado por SeaPirates Ver Mensaje
Tengo estas funciones dentro de una clase php:

Código PHP:
    public function Test($key) {

        return 
$this->Language[$key];
        
    }
    
    public function 
Parse($content)
    {    
        
$this->Template preg_replace('/{(.*?)}/is'$this->Test('\1'), "{test} texto2 text3 texto4");
        echo 
$this->Template;
    } 
Pasa el string "test" por la función Test(), el problema es que al tratar de imprimir una variable definida más arriba como $this->Language['test'] no la imprime. Pero si manualmente pongo return $this->Language['test'] si lo hace.

¿Que puede ser? Debe ser algo del preg_replace, pero no encuentro solución
Y si le haces un var_dump que te dice?
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives

Etiquetas: funciones, variable
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 00:12.