PDA

Ver la Versión Completa : variables variables (manual php)


salvica
25-09-2005, 16:44:52
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:

<?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

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