<?php 
$str = '我的应用{$param1}和{$param2}';
  $tpl_vars['param1'] = 'value1';
  $tpl_vars['param2'] = 'value2';
    //$patten = "/{\\$([a-zA-Z0-9_]+)}/";
    $patten = "/\{\\$([a-zA-Z0-9_]+)\}/";
    if(strpos($str, '{$') !== false){
     $str = preg_replace($patten, "<?php echo \$tpl_vars['$1']; ?>", $str);
    }
    echo $str;就是这一行  $str = preg_replace($patten, "<?php echo \$tpl_vars['$1']; ?>", $str);为什么替换不了,为什么 $tpl_vars不起作用??

解决方案 »

  1.   

    echo  后面加引号再  赚一把
      

  2.   

    得到
    我的应用<?php echo $tpl_vars['param1']; ?>和<?php echo $tpl_vars['param2']; ?>这是正确的!
    你想得到什么?
      

  3.   

    那就是你的代码产生的结果
    你只简单的 echo $str;
    当然是看不到的,因为 <?php ?> 被浏览器解释成了 html 标记,“查看源文件”就可以看到了如果你在前面先输出一个 <xmp> 标记,就都看到了
      

  4.   

    确实是的,查看源文件就有了,这个谢谢了
    不过还有个想问下
    就是我想把把里面的变量给打印出来,但是并没有打印出来
    却给我输出了
    我的应用<?php echo $tpl_vars['param1']; ?>和<?php echo $tpl_vars['param2']; ?>
    我想打印出来怎么做?