Foros del Web » Programando para Internet » PHP »

problema con eval(): devuelve null (vacio)

Estas en el tema de problema con eval(): devuelve null (vacio) en el foro de PHP en Foros del Web. Hola, me estoy volviendo loco o ya tengo un cacao con tanto lenguaje de programación que tengo un lío de narices... Llevo toda la mañana ...
  #1 (permalink)  
Antiguo 13/01/2009, 10:08
 
Fecha de Ingreso: octubre-2006
Mensajes: 13
Antigüedad: 17 años, 6 meses
Puntos: 0
problema con eval(): devuelve null (vacio)

Hola, me estoy volviendo loco o ya tengo un cacao con tanto lenguaje de programación que tengo un lío de narices... Llevo toda la mañana probando distintas sintaxis y nada. He consulatado algunos 'post' del foro pero no me aclaran. ¿Alguien me puede echar un cable?

Tengo el sigueinte código:
Utilizando una tabla de Mysql:

$a = trim($row["campo1"]); // campo1 = http://www.url.com/archivo
$b = trim($row["campo2"]); // campo2 = date("Ymd") tal y como está escrito

Nota: campo2 es literalmente date("Ymd") es decir código php

ahora pretendo "sin conseguirlo" que:

$z = $a.$b, pero que $z devuelva el valor de ejecutar la funcion date(), es decir:

http://www.url.com/archivo20090101

Pues nada, todo lo que consigo es:
http://www.url.com/archivodate("Ymd") // o bien
http://www.url.com/archivo // ($_b = null que es lo que me pasa algunas veces)

He probado:
$c=eval($b); con todo tipo de caracteres delante detrás, en medio, con echo, etc. es decir eval('$b'); eval('$b;'); he probado a añadir el puntoycoma en el contenido del campo2, para que eval se evalúe correctamente, y nada de nada.

Total que pretendo que
$z=$a.$c = http://www.url.com/archivo20090101 y que no atino.

Gracias.
  #2 (permalink)  
Antiguo 13/01/2009, 10:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con eval(): devuelve null (vacio)

bueno... lo que pasa es que debes leer el manual de PHP

la función eval() evalúa su contenido como código PHP, sin entregar salida alguna...

el código, se evalúa en el contexto donde se ejecuta... pon atención a esto

Código PHP:
$foo null;

eval(
'$foo = date("dMY");');

echo 
$foo// 13Jan2009 
ahora, si quieres que devuelva algo.. debes obligarle de manera lógica...

Código PHP:
$foo = eval('?' '><' '?php echo date("dMY");');

echo 
$foo// 13Jan2009 

PDTA: te sugiero consultes el manual, para entender el porque de estas formas....

http://php.net/eval
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/01/2009, 10:39
 
Fecha de Ingreso: octubre-2006
Mensajes: 13
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: problema con eval(): devuelve null (vacio)

hola pakete, ya leí el manual de php, y como parece que no me aclaro, por eso hice el post.. he probado a cambiar el código tal y como me indicas y sigue sin funcionar. me da:

Me explico...

Puse lo siguiente, tal y como comentabas:

$c=null;
eval('$c = date("Ymd");');
$z=$a.$c // y funciona, obtengo lo siguiente:
http://www.url.com/archivodate20090113

PERO... si en lugar de poner la función date() textualmente pongo $b, cuyo contenido es date("Ymd"):

$c=null;
eval('$c = $b;'); //donde $b= campo2 = date("Ymd")
$z=$a.$c // NO FUNCIONA, y obtengo lo siguiente:

http://www.url.com/archivodate("Ymd")

Socorro...
  #4 (permalink)  
Antiguo 13/01/2009, 10:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con eval(): devuelve null (vacio)

tu lo has dicho, textualmente es date("Ymd")

ya que la asignación de $b ='date("Ymd")'; es eso... una cadena común y corriente

cosa que no es lo mismo....
Código PHP:
$a 'date("Ymd")';
$b date("Ymd");
$c null;

eval(
'$c = $a;');
echo 
"$c<br />"// date("Ymd")


eval('$c = $b;');
echo 
"$c<br />"// 20090113 
por eso, al evaluar $b .... pues ¡¡ es una cadena !!!!

¿listo??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 13/01/2009, 11:10
 
Fecha de Ingreso: octubre-2006
Mensajes: 13
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: problema con eval(): devuelve null (vacio)

Vale... pues entonces como hago para que esa cadena normal y corriente, deje de serlo y devuelva el valor, en lugar de devolver el texto ?

Ten en cuenta que el valor está almacenado en un campo de la tabla, y no puedo (o no se me ocurre como) asignarle a $b el valor =date("Ymd") en lugar de como parece que estoy haciendo ahora: $b="date('Ymd')"
  #6 (permalink)  
Antiguo 13/01/2009, 11:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con eval(): devuelve null (vacio)

mmm... entiendo, debes usar las comillas dobles para evaluar tu expresión primeramente...

pero debes evitar evaluar tu variable de asignación, ya verás por que....

Código PHP:
$foo $row['campo']; // que seria string( date("Ymd") )
$o null;

eval(
"\$o = $foo;");

// que sería igual a...
eval('$o = ' $foo ';'); 
el punto es... debes evaluar antes tu expresión, ya que debe evaluarse dos veces....

al evaluarse con comillas simples, tan solo toma el valor textual de la variable... con comillas dobles, evalúa de un tajo esta expresión... dejándola como si la escribieras directamente, pues...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 13/01/2009, 11:31
 
Fecha de Ingreso: octubre-2006
Mensajes: 13
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: problema con eval(): devuelve null (vacio)

paketetrueke... RESUELTO....
Por fin...........

Muchísimas GRACIAS
  #8 (permalink)  
Antiguo 13/01/2009, 13:47
 
Fecha de Ingreso: febrero-2006
Mensajes: 134
Antigüedad: 18 años, 2 meses
Puntos: 10
Respuesta: problema con eval(): devuelve null (vacio)

Sin tener que asignar los datos a una variable temporal,
Código PHP:
// (...)
$b $row['campo2']; // string ( date("Ymd") )
$z $a.eval('return '.$b); 
__________________
Si te ha gustado lo que he dicho, puedes darme algún punto de reputación, que no te cuesta nada ^_^.

Di no a los juicios de valor!
  #9 (permalink)  
Antiguo 13/01/2009, 13:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con eval(): devuelve null (vacio)

exacto!!

^^
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 17:24.