En primer lugar ya estás escapando, ¿por que volver a escapar? Lo pregunto sin que me des una contestación es solo una pregunta para que analizes. Si vuelves a escapar, lo que estarías haciendo es colocando una back-slash a los back-slash (\\). Error, porque no me fije que estabas declarando en otro lado. Lo que sucede con tu código es más bien que no está escapando nada porque ya la primera variable no muestra los backslash. En tu ejemplo quedaría así
Código PHP:
Ver original$salida = "$foo = 'bar'; echo $foo;";
Esto provoca este error
Cita:
Notice: Undefined variable: foo in C:\xampp\htdocs\b.php(3) : eval()'d code on line 1
Notice: Undefined variable: foo in C:\xampp\htdocs\b.php(3) : eval()'d code on line 1
= 'bar'; echo ;
Al parecer no tienes declarado ver todos los errores debes modificarlo para que puedas ver todo lo que haces mal, lee este tema
http://www.forosdelweb.com/f18/aport...rrores-735515/
Para resolver se puede hacer de varias formas
1.
Código PHP:
Ver original<?php
$variable = "\\\$foo = 'bar'; echo \\\$foo;";
eval('$salida = "' . $variable . '";'); echo $salida;
2.
Código PHP:
Ver original<?php
$variable = "\$foo = 'bar'; echo \$foo;";
echo $salida;
La razón porque ocurre lo que te está pasando es que el primer escape es para la primera variable. Entonces cuando la mencionas por segunda vez lo que estás colocando es algo como
Cita: eval('$salida = "' . $foo = 'bar'; echo $foo; . '";');
Porque la primera variable ya no contiene los back-slash, ya que su función era para la primera solamente.