您当前的位置: 首页 > 网站编程 > PHP教程 > php Smarty模板引擎之 if else的用法

php Smarty模板引擎之 if else的用法

作者:不详 来源:网络 发布时间: 2014-08-10 21:56 点击:
用法: {if}{/if} {if} {else}{/else}{/if} 解析引擎: 代码如下 // if $if_operators = array(,,==,===,=,=,!=,!==); $is_operator = false; $pattern_if = /{$left_tag}ifs+((.*?)){$right_tag}/; preg_match_all($pattern_if,$content,$match_if); if (isset($match

php Smarty模板引擎之 if else的用法

  用法:

  {if}{/if}

  {if} {else}{/else}{/if}

  解析引擎:

  

  

  

  

  

  

  

  

  

  

  
代码如下
// if

    $if_operators = array(">","<","==","===",">=","<=","!=","!==");

    $is_operator = false;

    $pattern_if = "/{$left_tag}ifs+((.*?)){$right_tag}/";

   

preg_match_all($pattern_if,$content,$match_if);

   

    if (isset($match_if[1]) && is_array($match_if[1])) {

    

     foreach ($match_if[1] as $key_if=>$val_if) {

      foreach ($if_operators as $if_operator) {

       $items = explode($if_operator, $val_if);

       if (count($items) == 2) {

        $is_operator = true;

        $shift_left = substr($items[0], 0,1);

        $pop_left = substr($items[0], 1);

        $shift_right = substr($items[1], 0,1);

       

        $pop_right = substr($items[1], 1);

        $left_var = $shift_left == '$'? '$this->var_tpl_arr["'.$pop_left.'"]':$items[0];

        $right_var = $shift_right == '$'?'$this->var_tpl_arr["'.$pop_right.'"]':$items[1];

        $content = str_replace($match_if[0][$key_if], "<?php if({$left_var} {$if_operator} {$right_var}) { ?>", $content);

        break;

       } else {

        continue;

       }

      }

      if (!$is_operator) {

       $content = str_replace($match_if[0][$key_if], "<?php if({$val_if}) { ?>", $content);

      }

     }

    }

   

   

    // if close

    $pattern_if = "/{$left_tag}/if{$right_tag}/";

    $replace_if = "<?php } ?>;";

    if (preg_match($pattern_if, $content)) {

     $content = preg_replace($pattern_if, $replace_if, $content);

    }

   

    // else

    $pattern_else = "/{$left_tag}else{$right_tag}/";

    $replace_else = "<?php } else { ?>";

    if (preg_match($pattern_else, $content)) {

     $content = preg_replace($pattern_else, $replace_else, $content);

    }

   

    // else close

    $pattern_else = "/{$left_tag}/else{$right_tag}/";

    $replace_else = "";

    if (preg_match($pattern_else, $content)) {

     $content = preg_replace($pattern_else, $replace_else, $content);

    }


  模板表示方法:

  

  

  

  

  

  

  

  

  

  

  
代码如下


  <br/>

  <br/>

  $var_left == {$var_left},$var_right == {$var_right}<br/><br/>

  test if >:$var_left>1

  <br/>

  {if ($var_left>1)}

  <b>if > 条件成立!</b>

  {/if}

  <br/>

  test if <:$var_left<5

  <br/>

  {if ($var_left<5)}

  <b>if < 条件成立!</b>

  {/if}

  <br/>

  test if ==:$var_left==$va_right

  <br/>

  {if ($var_left==$va_right)}

  <b>if == 条件成立!</b>

  {else}

  <b><font color=red>if = 条件不成立!</font></b>

  {/if}

  


  解析后的缓存文件:

  

  

  

  

  

  

  

  

  

  

  
代码如下


  <br/>

  <br/>

  $var_left == <?php echo $this->var_tpl_arr["var_left"];?>,$var_right == <?php echo $this->var_tpl_arr["var_right"];?><br/><br/>

  test if >:$var_left>1

  <br/>

  <?php if($this->var_tpl_arr["var_left"] > 1) { ?>

  <b>if > 条件成立!www.111cn.net</b>

  <?php } ?>;

  <br/>

  


  test if

  

  

  

  

  

  

  

  

  

  

  
代码如下
<:$var_left<5

  <br/>

  <?php if($this->var_tpl_arr["var_left"] < 5) { ?>

  <b>if < 条件成立!</b>

  <?php } ?>;

  <br/>


  test if ==:$var_left==$va_right

  

  

  

  

  

  

  

  

  

  

  
代码如下
<br/>

  <?php if($this->var_tpl_arr["var_left"] == $this->var_tpl_arr["va_right"]) { ?>

  <b>if == 条件成立!</b>

  <?php } else { ?>

  <b><font color=red>if == 条件不成立!</b></b>

  <?php } ?>;
分享到:
本文"php Smarty模板引擎之 if else的用法"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4