Debate sobre php

9 views
Skip to first unread message

Lito

unread,
Aug 13, 2007, 10:26:04 AM8/13/07
to Desarrollo web Paraguay
Función eval();

Evalúa cierta cadena dada con contenido php válido, para ejecutarla
como código php.
ejemplo1:

<?php
$cadena = 'taza';
$nombre = 'cafe';
$cad = 'Esta es una $cadena con mi $nombre en ella.';
echo $cad. "\n";
eval("\$cad = \"$cad\";"); // esta es la cadena con contenido php
echo $cad. "\n";
?>

//-- Se imprime lo siguiente: -----------------------------//

Esta es una $cadena con mi $nombre en ella.
Esta es una taza con mi cafe en ella.
//------------------------------------------------------------------//

Ahora fijense en esta pruebita que hice...

<?
$hello = "HOLA"; //comillas
$hola = 'HOLA'; //comillas simples

$var1 = "$hello, como estas?"; //comillas
$var2 = '$hello, como estas?'; //comillas simples

$var3 = "$hola, como estas?"; //comillas
$var4 = '$hola, como estas?'; //comillas simples

//Imprime asi....
echo $var1." #1<br>"; //HOLA, como estas? #1
echo $var2." #2<br>"; //$hello, como estas? #2
echo $var3." #3<br>"; //HOLA, como estas? #3
echo $var4." #4<br>"; //$hola, como estas? #4
?>

algun uso mas que le pueda dar a eval()???

rage

unread,
Aug 13, 2007, 12:14:52 PM8/13/07
to Desarrollo web Paraguay
Bueno, la verdad que la utilidad de eval() no es poder guardar
variables en una cadena con comilla simple, o mejor dicho no hace eso,
sino guardar código php para su utilización en una página, se lo puede
usar, por ejemplo, en vez de funciones, o sea, si queres usar un mismo
código muchas veces en tu página.
Por ejemplo:

<?php
function funcion(){
echo "hola mundo";
}

$eval = "echo 'hola mundo';";

eval($eval);
echo "<br>";
funcion();
?>

En éste caso mi función y mi variable $eval hacen lo mismo. Es un
ejemplo sencillo, pero creo que funciona para mostrar lo que quiero
explicar.


Ahora, para justificar lo que escribi mas arriba, que la funcion eval
no funciona para guardar variables dentro de cadenas con comillas
simples, voy a modificar una cosita en el ejemplo que posteaste.

$cadena = 'taza';
$nombre = 'cafe';
$cad = 'Esta es una $cadena con mi $nombre en ella.';

echo $cad. "<br>"; //aca reemplace \n por <br> para estar mas ordenado
nomas :P

eval("\$cad = '$cad';"); // en ésta linea hice el cambio importante,
reemplace las comillas por comillas simples
echo $cad. "\n";

Al usar comillas simples en el eval tambien me anulan las variables
dentro del texto.

Espero sea útil mi respuesta :)

Lito

unread,
Aug 13, 2007, 12:26:26 PM8/13/07
to Desarrollo web Paraguay
jajajaja ta bien papa..

mi punto nomas era que si es que se usa eval para imprimir (en el
primer caso) las variables por su contenido, no por su nombre.. que se
usen las "" nomas y no las ' ' e imprime bien..

conviene mas hacer esto...

$var = "hola";
$var2 = "$var, como estas?";
echo $var2;

que hacer esto...

$var = 'hola';
$var2 = '$var, como estas?';
eval("\$var2 = \"$var2\";");
echo $var2;


en el primero va a imprimir "hola, como estas?" asi como en el
segundo..
pero para que usar eval en el segundo si es que lo unico que tenes que
hacer para evitar usarlo es poner los strings de tus variables entre
comillas dobles en vez de simples ^^

para mi que tiene que haber algunas otras utilidades de esa funcion
que no se puedan reemplazar por otros metodos.. como el mio de cambiar
comillas y el de rage de hacer funciones nomas ><,
(que tecoreiiiissss.. pero algo hay que empezar a postear.. )(se
aprende y se hace refresh volviendo a las raices!! xD )


rage

unread,
Aug 14, 2007, 10:10:43 AM8/14/07
to Desarrollo web Paraguay
La diferencia con funciones y con eval es que podes guardar en una
base de datos un código y despues ejecutarlo con eval. Este ejemplo da
en la página de php, de donde creo que sacaste tu info jeje porque
tambien usan el mismo ejemplo, tenías que leer nomás todo el texto:

"eval() evalúa la cadena dada en cadena_codigo como código PHP. Entre
otras cosas, esto puede ser útil para almacenar código en un campo de
texto en una base de datos para su ejecución posterior."

fuente: http://www.php.net/eval

Lito

unread,
Aug 14, 2007, 10:17:21 AM8/14/07
to Desarrollo web Paraguay
claro.. entiendo..

lo que no estoy seguro es si se refiere a que si guardas asi mismo en
una bd.. --> "estoy guardando esta cadena con esta $variable"

entonces al consultarla e imprimirla se muestra asi.. "estoy guardando
esta cadena con esta $variable"

pero depende... si es que en tu codigo esta asi..

$variable = "linea de texto";

echo $consulta; //aca se imprime lo que se trajo de la BD

//imprime "estoy guardando esta cadena con esta linea de texto"

solo depende de como metas tu consulta en la variable.. si con
comillas dobles o simples.. :S

Reply all
Reply to author
Forward
0 new messages