Foros del Web » Programando para Internet » PHP »

Imprimir variable con código php

Estas en el tema de Imprimir variable con código php en el foro de PHP en Foros del Web. Hola amigos. estoy con un problemita con la funcion print. supongamos que tengo el siguiente código: Código PHP: <?php $variable  =  "HOLA" ; print  $variable ...
  #1 (permalink)  
Antiguo 02/05/2015, 12:26
 
Fecha de Ingreso: septiembre-2013
Mensajes: 87
Antigüedad: 8 años, 9 meses
Puntos: 1
Imprimir variable con código php

Hola amigos. estoy con un problemita con la funcion print.
supongamos que tengo el siguiente código:
Código PHP:
<?php
$variable 
"HOLA";
print 
$variable;
?>
Esto imprime en pantalla la palabra HOLA.

Pero si tengo lo siguiente:
Código PHP:
<?php
$variable 
"<?php if(1==1) { echo 'HOLA'; } ?>";
print 
$variable;
?>
Esto no me imprime en pantalla la palabra HOLA.
Lo que estoy dando es un ejemplo secillo y hasta estupido, pero bueno, en mi caso, lo que estoy haciendo requiere que se me imprima una variable que dentro suyo tiene código php. Pero no quiero que se me imprima en pantalla el código php, quiero que se me imprima la "interpretación" de ese codigo php (o sea, la palabra HOLA). Se entiende?

Intenté también reemplazar print por echo pero no funciona.
Si alguien conoce otra función que me permita hacerlo o la alternativa a esto se lo agradecería. Muchas gracias.
  #2 (permalink)  
Antiguo 02/05/2015, 12:30
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 9 años
Puntos: 379
Respuesta: Imprimir variable con código php

La función que buscas se llama eval: http://php.net/manual/es/function.eval.php revisa el manual
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 02/05/2015, 13:12
 
Fecha de Ingreso: septiembre-2013
Mensajes: 87
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Imprimir variable con código php

Hola amigo. muchas gracias por tu respuesta. sabes que lo intenté pero no me sale. no se si seré yo que no lo se usar.
En la documentación de php da este ejemplo:
Código PHP:
<?php
$cadena 
'taza';
$nombre 'café';
$str 'Esto es una $cadena con mi $nombre en ella.';
eval(
"\$str = \"$str\";");
echo 
$str"\n";
?>
Que devuelve: Esto es una taza con mi café en ella.

Pero en mi ejemplo no funciona.

Código PHP:
<?php 
$variable 
"<?php if(1==1) { echo 'HOLA'; } ?>"
eval(
"\$variable = \"$variable\";");
echo 
$variable"\n";
?>
Cuando pongo eso no me devuelve nada. y si pongo

Código PHP:
<?php 
$variable 
"if(1==1) { echo 'HOLA'; }"
eval(
"\$variable= \"$variable\";");
echo 
$variable"\n";
?>
sacandole a la $variable la apertura y cierre de php, como indica en la documentacion, me imprime en pantalla if(1==1) { echo 'HOLA'; }

Será que lo estoy haciendo mal?
  #4 (permalink)  
Antiguo 02/05/2015, 13:19
 
Fecha de Ingreso: septiembre-2013
Mensajes: 87
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Imprimir variable con código php

Ahh ya lo solucioné. la forma de usarlo era asi;

Código PHP:
Ver original
  1. <?php
  2. $variable = "if(1==1) { echo 'HOLA'; }";
  3. eval($variable);
  4. ?>

y eso te imprime HOLA.

Muchas gracias por tu ayuda hhs
  #5 (permalink)  
Antiguo 02/05/2015, 14:22
 
Fecha de Ingreso: septiembre-2013
Mensajes: 87
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Imprimir variable con código php

AH disculpa nuevamente. Hay casos en los que esto no me funciona y la verdad no se si tenga solución.
Supongamos el siguiente ejemplo:

Código PHP:
Ver original
  1. <?php
  2. $variable = "if(2==1) {";
  3. eval ($variable);
  4. echo 'hola';
  5. $variable2 = "}";
  6. eval($variable2);
  7. ?>

En este caso no me funciona. o sea, lo que en realidad estoy tratando de hacer es el tema del modelo vista controlador. pero como no se mucho de programacion orientada a objetos, trato de separar el php del html poniendo asi:
En una pagina llamada interfaz.php
Código HTML:
Ver original
  1. <!doctype html>
  2. <meta charset="utf-8">
  3. <title>Documento sin título</title>
  4. </head>
  5.  
  6. {if sesion iniciada} INICIAR SESION {cierre if} <br>
  7. {if sesion no iniciada} CERRAR SESION {cierre if} <br>
  8. </body>
  9. </html>

y en una pagina llamada backend.php pongo:
Código PHP:
Ver original
  1. <?php
  2. $diccionario = array();
  3. $diccionario['if sesion iniciada'] = '<?php if(isset($_SESSION["id_usuario"])) { ?>';
  4. $diccionario['if sesion no iniciada'] = '<?php if(!isset($_SESSION["id_usuario"])) { ?>';
  5. $diccionario['cierre if'] = '<?php  } ?> ';
  6.  
  7. $template = file_get_contents('interfaz.php');
  8. foreach ($diccionario as $clave=>$valor) {
  9.     $template = str_replace('{'.$clave.'}' , $valor, $template);
  10. }
  11. print $template;
  12.  
  13. ?>

Pero no me funciona, me devuelve:
INICIAR SESION
CERRAR SESION

o sea, no me interpreta el php.
Con EVAL tampoco funciona.
No se si fui claro. hay alguna otra forma de hacer esto? Gracias
  #6 (permalink)  
Antiguo 02/05/2015, 14:49
 
Fecha de Ingreso: junio-2009
Mensajes: 101
Antigüedad: 13 años
Puntos: 13
Respuesta: Imprimir variable con código php

Puedes solucionarlo con la asignación condicionada:

Código PHP:
$var = (condition) ? "value for true" "value for false" 
En el caso de tu ejemplo:

Código PHP:
<?php 
    $variable 
= (isset($variable)) ? $variable 'HOLA' 
    print 
$variable
?>

Última edición por BanNsS1; 02/05/2015 a las 14:54
  #7 (permalink)  
Antiguo 02/05/2015, 15:27
 
Fecha de Ingreso: septiembre-2013
Mensajes: 87
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Imprimir variable con código php

Hola, gracias por responder. En realidad lo que quiero hacer es que en el archivo de interfaz.php solo haya codigo html, y que en las partes donde deberia haber if, while, do while, etc pueda poner por ejemplo

{if sesion iniciada} iniciar sesion {cierre if}

y despues desde el archivo backend.php cargar el interfaz.php , reemplazar:
{if sesion iniciada} por <?php if(isset($_SESSION["id_usuario"])) { ?>
y {cierre if} por <?php } ?>
y por ultimo imprimir el resultado.

Con lo que me decis vos que haga solo me sirve para los if no? y ademas el HOLA tiene que estar en la variable php, y yo quiero que este en el interfaz.php
  #8 (permalink)  
Antiguo 02/05/2015, 20:34
 
Fecha de Ingreso: junio-2009
Mensajes: 101
Antigüedad: 13 años
Puntos: 13
Respuesta: Imprimir variable con código php

Creo que lo que buscas es algo como esto:

https://pear.php.net/manual/en/packa...tribute.if.php
  #9 (permalink)  
Antiguo 04/05/2015, 15:59
 
Fecha de Ingreso: septiembre-2013
Mensajes: 87
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Imprimir variable con código php

Muchas gracias amigo por responder nuevamente. Pero creo que sigo en la misma, eso me sirve solo si entre las llaves hay IF, si hubiera por ejemplo un DO WHILE no me serviría no?
  #10 (permalink)  
Antiguo 04/05/2015, 16:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 14 años, 2 meses
Puntos: 2534
Respuesta: Imprimir variable con código php

Cita:
Iniciado por martinpedulla Ver Mensaje
Muchas gracias amigo por responder nuevamente. Pero creo que sigo en la misma, eso me sirve solo si entre las llaves hay IF, si hubiera por ejemplo un DO WHILE no me serviría no?
De hecho, y me extraña que nadie te lo haya recalcado ya: tu principal problema es no usar un sistema de plantillas que implemente todo ello.

¿Para qué quieres re-inventar la rueda?

Además usar eval() es lo peor.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 04/05/2015, 16:51
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 9 años
Puntos: 379
Respuesta: Imprimir variable con código php

Prueba Plates Php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #12 (permalink)  
Antiguo 04/05/2015, 18:07
 
Fecha de Ingreso: septiembre-2013
Mensajes: 87
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Imprimir variable con código php

Muchas gracias a los dos!! no es que quiera reinventar la rueda, es que no se como hacerlo. Voy a ver como es este sistema de plantillas que me pasaron, para aprender a usarlo. Muchas gracias!!

Etiquetas: 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 08:05.