Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   variables variables (manual php) (https://www.clubdelphi.com/foros/showthread.php?t=25513)

salvica 25-09-2005 16:44:52

variables variables (manual php)
 
Hola a tod@s

Tengo una especie de "diccionario" definido para hacer una página web que se visualice en diferentes idiomas y lo inserto en las diferentes páginas con el consabido "include".

Hasta aquí, correcto :D, el problema que se me plantea es que al utilizarlo para enviar "emilios" no consigo leer el contenido de las variables definidas en ese fichero

Ejemplo: supongamos que tengo definido el siguiente diccionario:
Código PHP:

 <?php
 
.....
 
$nombre "NOMBRE";
 
$apellidos "APELLIDOS";
 
$separador "Y"
 
$completo "$nombre $separador $apellidos";
 .....
  
?>

Ahora tengo una función que recibe las lineas HTML y las quita el código PHP
Código PHP:

   function quitarCadenaPhp( $valor, $idioma ) {
            $tmpCadena = stripslashes( $valor );
            $posPhp    = strpos( $tmpCadena, "<?php echo" );
            if( 
$posPhp === false ) { // nota: tres signos igual
                // no encontrado ... devolver la cadena entera
                return 
$tmpCadena;
            } else {
              //------------> 1º - copiar en "
cadenaIni" la parte anterior al comienzo del PHP
                
$cadenaIni  = substr( $tmpCadena, 0, $posPhp );
              //------------> 2º - buscar el comienzo de la variable
                
$posInicio  = strpos( $tmpCadena, "$" );
                
$tmpCadena  = substr( $tmpCadena, ($posInicio) );
              //------------> 3º - buscar el final de la variable o variables
                
$posFinal   = strpos( $tmpCadena, "?>" );
                $cadenaFin  = substr( $tmpCadena, 0, ($posFinal-1) );
              //------------> 4º - buscar el final del PHP
               $tmpCadena  = substr( $tmpCadena, ($posFinal+2) );
                $tmpCadena  = ltrim(  $tmpCadena );
              //------------> 5º - quitar inicio, fin y las uniones de variables
                $cadenaFin  = str_replace( '"', ' ', $cadenaFin );
                $cadenaFin  = str_replace( ".", " ", $cadenaFin );
                $cadenaFin  = str_replace( ";", " ", $cadenaFin );
              //-----> 6º - formar la cadena resultante
              //----->        aqui la cadena deberia ser "$nombre $apellidos"
                require( "../variables/" . $idioma . "/diccionario.php" );
               $cadenaPhp  = "";
              //----->        pasamos las variables encontradas a un array
                $lista      = split( " ", trim($cadenaFin) );
                for( $i=0; $i<count($lista); $i++ ) {
                //----->      por cada variable, tomar su valor
                     $cadenaPhp  .= $$lista[$i] . " "; // ******* FALLO
                }
              //----->        quitar espacios en ambos lados y dejarla en "cadenaIni"
                $cadenaIni .= trim(  $cadenaPhp );
              //----->        quitar espacios a la izquierda y dejarla en "cadenaIni"
                $cadenaIni .= ltrim( $tmpCadena );
              //-----> 7º - si hay nuevo inicio de pha, quitarlo recursivamente
                $posPhp     = strpos( $tmpCadena, "<?php echo" );
                if( 
$posPhp === false ) { // nota: tres signos igual
                // no hay más php ... devolver la cadena formada
                    return 
$cadenaIni;
                } else {
                // encontrado ... llamar de nuevo a la función
                    return quitarCadenaPhp( 
$cadenaIni$idioma );
                }
            }
 
   }

La consulta, después de todo el rollo es: ¿Como se hace para utilizar una variable contenida dentro de otra variable?

He utilizado $$lista[$i], ${$lista[$i]} y siempre el mismo rollo:

Notice: Undefined variable: $nombre on line ....
Notice: Undefined variable: $apellidos on line ....
Notice: Undefined variable: $separador on line ....
Notice: Undefined variable: $completo on line ....

Gracias por la ayuda
Salvica


La franja horaria es GMT +2. Ahora son las 11:11:05.

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