Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/04/2006, 06:38
Avatar de JorgitoAlfajor
JorgitoAlfajor
 
Fecha de Ingreso: enero-2006
Mensajes: 152
Antigüedad: 18 años, 4 meses
Puntos: 1
Bueno, como sabrás, eval() sirve para evaluar una cadena como código php, por lo que la cadena que le des como argumento a eval() debe contener código php válido. Ese ejemplo evalua el codigo:

$cad = "Esta es una $cadena con mi $nombre en ella.";

Es decir, lo que hace ese ejemplo es guardar dentro de $cad la cadena contenida en ella misma pero expandiendo las variables $cadena y $nombre. Cuando esta cadena se asigna a $cad (la tercer línea del ejemplo), dichas variables no se expanden porque la cadena se encuentra entre comillas simples, por lo que $cadena y $nombre no son tratadas como variables, sino como texto comun. Para que las variables se expandan (es decir, se muestre su contenido en lugar de su nombre) se utilizan las comillas dobles. Al evaluar $cad = "Esta es una $cadena con mi $nombre en ella."; las variables $cadena y $nombre son expandidas, por lo que el valor de $cad despues de la evaluacion sería el string "Esta es una taza con mi cafe en ella.". Ahora bien, como el argumento para eval es una cadena entre comillas dobles, si no utilizas la barra delante de $cad, esta variable será expandida y lo que se evaluaría seria algo asi:

Esta es una $cadena con mi $nombre en ella. = "Esta es una $cadena con mi $nombre en ella.";

Lo que obviamente no es lo que se quería evaluar (si evaluas eso obtendrás un error porque no es código php válido). La barra \ delante del $ sirve para que php interprete el $ no como el inicio del nombre de una variable, sino como un caracter comun.
Espero no haberte confundido más.
Saludos.
__________________
¿Se me entiende la letra?