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
|