【问题标题】:replace tags with PHP variables using preg_match使用 preg_match 将标签替换为 PHP 变量
【发布时间】:2011-07-28 05:02:16
【问题描述】:

{$thisname} 应转换为<?php echo $thisname; ?>

{thisname} 应转换为<?php echo $thisname; ?>

{$this.movie.games} && {$this.new} 应分别转换为<?php echo $this["movie"]["games"]; ?><?php echo $this["new"]; ?>

【问题讨论】:

    标签: php tags replace


    【解决方案1】:
    $tpl = 'Name: {$name}, Surname: {surname}, City: {$person.address.city}';
    
    function tpl2php($m){
        $var =  $m[1];
        if(strpos($var,'.')){
            $varArr = explode('.',$var);
            $var = $varArr[0];
            for($i=1;$i<count($varArr);$i++){
                $var .= '["' . $varArr[$i] .'"]';
            }
        }
        return '<?php echo $' . $var . '; ?>';
    }
    
    $php = preg_replace_callback('/{\$?([_a-z][\w\.]+[\w])}/iS','tpl2php',$tpl);
    // Name: <?php echo $name; ?>, Surname: <?php echo $surname; ?>, City: <?php echo $person["address"]["city"]; ?>
    

    【讨论】:

      【解决方案2】:

      使用模板系统,我建议使用http://phpsavant.com/ 虽然看起来你对SmartyDwoo 更感兴趣

      没有必要重新发明轮子:)

      【讨论】:

      • 我没有投反对票,但是添加一个巨大的模板系统只是为了能够进行这种替换可能不是用户想要或需要的。 (另一方面,再想一想,它可能会为 OP 节省大量工作,尤其是在解析像 var1.var2.var3 这样的复杂内容时,+1)
      【解决方案3】:

      使用str_replace 函数。

      【讨论】:

      • 将所有 } 标签替换为 ; ?> 我不想做...我想使用 preg match
      【解决方案4】:

      preg_replace 和regular expressions 比 str_replace 更灵活,尤其是当您必须将 this.movi​​e 这样的字符串解析为 $this["movie"] 时。不过,这不是一件容易的事。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-19
        • 2014-03-09
        • 1970-01-01
        • 2012-07-27
        • 1970-01-01
        • 2018-09-19
        相关资源
        最近更新 更多