我的数据库里有这样一段字符串:<img src="http://www.cacakl.com/img/logo.jpg" alt="" border="0" /><br /><font color="#666666" size="2px">这个网站是 $site </font><br />
我用PHP 从数据库中取出这段字符串,并赋给 $str.然后:$site = "a good site";
eval("\$str = \"$str\";");
echo $str;echo后,可是得到的 还是上面那样的字符串, $site 还是 $site, 并没有变成 “a good site”
为什么啊?? 怎么才能让从数据库中取出的字符串中所包含的变量变成其具体的值呢 ?

解决方案 »

  1.   

    <img src="http://wwwsrc=" 这个引号跟\"$str的引号打架了
      

  2.   

    $str = '<img src="http://www.cacakl.com/img/logo.jpg" alt="" border="0" /><br /><font color="#666666" size="2px">这个网站是 $site </font><br />';
    $site = 'a good site';
    //1 eval ,最好能不用就别用
    #eval('$str="'.addslashes($str).'";');
    #echo $str;
    //2 regexp
    echo preg_replace('#\$([_a-z][a-z0-9]*)#ie','$$1',$str);
      

  3.   

    嗯……转义eval蛮少用点。。除非非常肯定代码安全