Maison  >  Article  >  php教程  >  Volist标签 bug改善

Volist标签 bug改善

WBOY
WBOYoriginal
2016-06-07 11:44:151089parcourir

mod 有点小问题,第103行
见下面代码
<?php <br /> // +----------------------------------------------------------------------<br> // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]<br> // +----------------------------------------------------------------------<br> // | Copyright (c) 2006-2012 http://thinkphp.cn All rights reserved.<br> // +----------------------------------------------------------------------<br> // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )<br> // +----------------------------------------------------------------------<br> // | Author: liu21st <liu21st><br> // +----------------------------------------------------------------------<br> <br> defined('THINK_PATH') or exit();<br> /**<br>  * CX标签库解析类<br>  * @category   Think<br>  * @package  Think<br>  * @subpackage  Driver.Taglib<br>  * @author    liu21st <liu21st><br>  */<br> class TagLibCx extends TagLib {<br> <br>     // 标签定义<br>     protected $tags   =  array(<br>         // 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次<br>         'php'       =>  array(),<br>         'volist'    =>  array('attr'=>'name,id,offset,length,key,mod','level'=>3,'alias'=>'iterate'),<br>         'foreach'   =>  array('attr'=>'name,item,key','level'=>3),<br>         'if'        =>  array('attr'=>'condition','level'=>2),<br>         'elseif'    =>  array('attr'=>'condition','close'=>0),<br>         'else'      =>  array('attr'=>'','close'=>0),<br>         'switch'    =>  array('attr'=>'name','level'=>2),<br>         'case'      =>  array('attr'=>'value,break'),<br>         'default'   =>  array('attr'=>'','close'=>0),<br>         'compare'   =>  array('attr'=>'name,value,type','level'=>3,'alias'=>'eq,equal,notequal,neq,gt,lt,egt,elt,heq,nheq'),<br>         'range'     =>  array('attr'=>'name,value,type','level'=>3,'alias'=>'in,notin,between,notbetween'),<br>         'empty'     =>  array('attr'=>'name','level'=>3),<br>         'notempty'  =>  array('attr'=>'name','level'=>3),<br>         'present'   =>  array('attr'=>'name','level'=>3),<br>         'notpresent'=>  array('attr'=>'name','level'=>3),<br>         'defined'   =>  array('attr'=>'name','level'=>3),<br>         'notdefined'=>  array('attr'=>'name','level'=>3),<br>         'import'    =>  array('attr'=>'file,href,type,value,basepath','close'=>0,'alias'=>'load,css,js'),<br>         'assign'    =>  array('attr'=>'name,value','close'=>0),<br>         'define'    =>  array('attr'=>'name,value','close'=>0),<br>         'for'       =>  array('attr'=>'start,end,name,comparison,step', 'level'=>3),<br>         );<br> <br>     /**<br>      * php标签解析<br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _php($attr,$content) {<br>         $parseStr = '<?php '.$content.' ?>';<br>         return $parseStr;<br>     }<br> <br>     /**<br>      * volist标签解析 循环输出数据集<br>      * 格式:<br>      * <volist><br>      * {user.username}<br>      * {user.email}<br>      * </volist><br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string|void<br>      */<br>     public function _volist($attr,$content) {<br>         static $_iterateParseCache = array();<br>         //如果已经解析过,则直接返回变量值<br>         $cacheIterateId = md5($attr.$content);<br>         if(isset($_iterateParseCache[$cacheIterateId]))<br>             return $_iterateParseCache[$cacheIterateId];<br>         $tag   =    $this->parseXmlAttr($attr,'volist');<br>         $name  =    $tag['name'];<br>         $id    =    $tag['id'];<br>         $empty =    isset($tag['empty'])?$tag['empty']:'';<br>         $key   =    !empty($tag['key'])?$tag['key']:'i';<br>         $mod   =    isset($tag['mod'])?$tag['mod']:'2';<br>         // 允许使用函数设定数据集 <volist>{$vo.name}</volist><br>         $parseStr   =  '<?php ';<br />         if(0===strpos($name,':')) {<br>             $parseStr   .= '$_result='.substr($name,1).';';<br>             $name   = '$_result';<br>         }else{<br>             $name   = $this->autoBuildVar($name);<br>         }<br>         $parseStr  .=  'if(is_array('.$name.')): $'.$key.' = 0;';<br>         if(isset($tag['length']) && '' !=$tag['length'] ) {<br>             $parseStr  .= ' $__LIST__ = array_slice('.$name.','.$tag['offset'].','.$tag['length'].',true);';<br>         }elseif(isset($tag['offset'])  && '' !=$tag['offset']){<br>             $parseStr  .= ' $__LIST__ = array_slice('.$name.','.$tag['offset'].',null,true);';<br>         }else{<br>             $parseStr .= ' $__LIST__ = '.$name.';';<br>         }<br>         $parseStr .= 'if( count($__LIST__)==0 ) : echo "'.$empty.'" ;';<br>         $parseStr .= 'else: ';<br>         $parseStr .= 'foreach($__LIST__ as $key=>$'.$id.'): ';<br>         //改善后<br>         $parseStr .= '++$'.$key.';';<br>         $parseStr .= '$mod = ($'.$key.' % '.$mod.' );';<br>         $parseStr .= '?>';<br>         /*改善前<br>         $parseStr .= '$mod = ($'.$key.' % '.$mod.' );';<br>         $parseStr .= '++$'.$key.';?>';*/<br>         <br>         $parseStr .= $this->tpl->parse($content);<br>         $parseStr .= '<?php endforeach; endif; else: echo "'.$empty.'" ;endif; ?>';<br>         $_iterateParseCache[$cacheIterateId] = $parseStr;<br> <br>         if(!empty($parseStr)) {<br>             return $parseStr;<br>         }<br>         return ;<br>     }<br> <br>     /**<br>      * foreach标签解析 循环输出数据集<br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string|void<br>      */<br>     public function _foreach($attr,$content) {<br>         static $_iterateParseCache = array();<br>         //如果已经解析过,则直接返回变量值<br>         $cacheIterateId = md5($attr.$content);<br>         if(isset($_iterateParseCache[$cacheIterateId]))<br>             return $_iterateParseCache[$cacheIterateId];<br>         $tag        =   $this->parseXmlAttr($attr,'foreach');<br>         $name       =   $tag['name'];<br>         $item       =   $tag['item'];<br>         $key        =   !empty($tag['key'])?$tag['key']:'key';<br>         $name       =   $this->autoBuildVar($name);<br>         $parseStr   =   '<?php if(is_array('.$name.')): foreach('.$name.' as $'.$key.'=>$'.$item.'): ?>';<br>         $parseStr  .=   $this->tpl->parse($content);<br>         $parseStr  .=   '<?php endforeach; endif; ?>';<br>         $_iterateParseCache[$cacheIterateId] = $parseStr;<br>         if(!empty($parseStr)) {<br>             return $parseStr;<br>         }<br>         return ;<br>     }<br> <br>     /**<br>      * if标签解析<br>      * 格式:<br>      * <if><br>      * <elseif></elseif><br>      * <else></else><br>      * </if><br>      * 表达式支持 eq neq gt egt lt elt == > >=       * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _if($attr,$content) {<br>         $tag        =   $this->parseXmlAttr($attr,'if');<br>         $condition  =   $this->parseCondition($tag['condition']);<br>         $parseStr   =   '<?php if('.$condition.'): ?>'.$content.'<?php endif; ?>';<br>         return $parseStr;<br>     }<br> <br>     /**<br>      * else标签解析<br>      * 格式:见if标签<br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _elseif($attr,$content) {<br>         $tag        =   $this->parseXmlAttr($attr,'elseif');<br>         $condition  =   $this->parseCondition($tag['condition']);<br>         $parseStr   =   '<?php elseif('.$condition.'): ?>';<br>         return $parseStr;<br>     }<br> <br>     /**<br>      * else标签解析<br>      * @access public<br>      * @param string $attr 标签属性<br>      * @return string<br>      */<br>     public function _else($attr) {<br>         $parseStr = '<?php else: ?>';<br>         return $parseStr;<br>     }<br> <br>     /**<br>      * switch标签解析<br>      * 格式:<br>      * <switch><br>      * <case>1</case><br>      * <case>2</case><br>      * <default></default>other<br>      * </switch><br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _switch($attr,$content) {<br>         $tag        =   $this->parseXmlAttr($attr,'switch');<br>         $name       =   $tag['name'];<br>         $varArray   =   explode('|',$name);<br>         $name       =   array_shift($varArray);<br>         $name       =   $this->autoBuildVar($name);<br>         if(count($varArray)>0)<br>             $name   =   $this->tpl->parseVarFunction($name,$varArray);<br>         $parseStr   =   '<?php switch('.$name.'): ?>'.$content.'<?php endswitch;?>';<br>         return $parseStr;<br>     }<br> <br>     /**<br>      * case标签解析 需要配合switch才有效<br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _case($attr,$content) {<br>         $tag    = $this->parseXmlAttr($attr,'case');<br>         $value  = $tag['value'];<br>         if('$' == substr($value,0,1)) {<br>             $varArray   =   explode('|',$value);<br>             $value        =    array_shift($varArray);<br>             $value      =   $this->autoBuildVar(substr($value,1));<br>             if(count($varArray)>0)<br>                 $value  =   $this->tpl->parseVarFunction($value,$varArray);<br>             $value      =   'case '.$value.': ';<br>         }elseif(strpos($value,'|')){<br>             $values     =   explode('|',$value);<br>             $value      =   '';<br>             foreach ($values as $val){<br>                 $value   .=  'case "'.addslashes($val).'": ';<br>             }<br>         }else{<br>             $value    =    'case "'.$value.'": ';<br>         }<br>         $parseStr = '<?php '.$value.' ?>'.$content;<br>         $isBreak  = isset($tag['break']) ? $tag['break'] : '';<br>         if('' ==$isBreak || $isBreak) {<br>             $parseStr .= '<?php break;?>';<br>         }<br>         return $parseStr;<br>     }<br> <br>     /**<br>      * default标签解析 需要配合switch才有效<br>      * 使用: <default></default>ddfdf<br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _default($attr) {<br>         $parseStr = '<?php default: ?>';<br>         return $parseStr;<br>     }<br> <br>     /**<br>      * compare标签解析<br>      * 用于值的比较 支持 eq neq gt lt egt elt heq nheq 默认是eq<br>      * 格式: <compare>content</compare><br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _compare($attr,$content,$type='eq') {<br>         $tag        =   $this->parseXmlAttr($attr,'compare');<br>         $name       =   $tag['name'];<br>         $value      =   $tag['value'];<br>         $type       =   isset($tag['type'])?$tag['type']:$type;<br>         $type       =   $this->parseCondition(' '.$type.' ');<br>         $varArray   =   explode('|',$name);<br>         $name       =   array_shift($varArray);<br>         $name       =   $this->autoBuildVar($name);<br>         if(count($varArray)>0)<br>             $name = $this->tpl->parseVarFunction($name,$varArray);<br>         if('$' == substr($value,0,1)) {<br>             $value  =  $this->autoBuildVar(substr($value,1));<br>         }else {<br>             $value  =   '"'.$value.'"';<br>         }<br>         $parseStr   =   '<?php if(('.$name.') '.$type.' '.$value.'): ?>'.$content.'<?php endif; ?>';<br>         return $parseStr;<br>     }<br> <br>     public function _eq($attr,$content) {<br>         return $this->_compare($attr,$content,'eq');<br>     }<br> <br>     public function _equal($attr,$content) {<br>         return $this->_compare($attr,$content,'eq');<br>     }<br> <br>     public function _neq($attr,$content) {<br>         return $this->_compare($attr,$content,'neq');<br>     }<br> <br>     public function _notequal($attr,$content) {<br>         return $this->_compare($attr,$content,'neq');<br>     }<br> <br>     public function _gt($attr,$content) {<br>         return $this->_compare($attr,$content,'gt');<br>     }<br> <br>     public function _lt($attr,$content) {<br>         return $this->_compare($attr,$content,'lt');<br>     }<br> <br>     public function _egt($attr,$content) {<br>         return $this->_compare($attr,$content,'egt');<br>     }<br> <br>     public function _elt($attr,$content) {<br>         return $this->_compare($attr,$content,'elt');<br>     }<br> <br>     public function _heq($attr,$content) {<br>         return $this->_compare($attr,$content,'heq');<br>     }<br> <br>     public function _nheq($attr,$content) {<br>         return $this->_compare($attr,$content,'nheq');<br>     }<br> <br>     /**<br>      * range标签解析<br>      * 如果某个变量存在于某个范围 则输出内容 type= in 表示在范围内 否则表示在范围外<br>      * 格式: <range>content</range><br>      * example: <range>content</range><br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @param string $type  比较类型<br>      * @return string<br>      */<br>     public function _range($attr,$content,$type='in') {<br>         $tag        =   $this->parseXmlAttr($attr,'range');<br>         $name       =   $tag['name'];<br>         $value      =   $tag['value'];<br>         $varArray   =   explode('|',$name);<br>         $name       =   array_shift($varArray);<br>         $name       =   $this->autoBuildVar($name);<br>         if(count($varArray)>0)<br>             $name   =   $this->tpl->parseVarFunction($name,$varArray);<br> <br>         $type       =   isset($tag['type'])?$tag['type']:$type;<br> <br>         if('$' == substr($value,0,1)) {<br>             $value  =   $this->autoBuildVar(substr($value,1));<br>             $str    =   'is_array('.$value.')?'.$value.':explode(\',\','.$value.')';<br>         }else{<br>             $value  =   '"'.$value.'"';<br>             $str    =   'explode(\',\','.$value.')';<br>         }<br>         if($type=='between') {<br>             $parseStr = '<?php $_RANGE_VAR_='.$str.';if('.$name.'>= $_RANGE_VAR_[0] && '.$name.''.$content.'<?php endif; ?>';<br>         }elseif($type=='notbetween'){<br>             $parseStr = '<?php $_RANGE_VAR_='.$str.';if('.$name.'<$_RANGE_VAR_[0] || '.$name.'>$_RANGE_VAR_[1]):?>'.$content.'<?php endif; ?>';<br>         }else{<br>             $fun        =  ($type == 'in')? 'in_array'    :   '!in_array';<br>             $parseStr   = '<?php if('.$fun.'(('.$name.'), '.$str.')): ?>'.$content.'<?php endif; ?>';<br>         }<br>         return $parseStr;<br>     }<br> <br>     // range标签的别名 用于in判断<br>     public function _in($attr,$content) {<br>         return $this->_range($attr,$content,'in');<br>     }<br> <br>     // range标签的别名 用于notin判断<br>     public function _notin($attr,$content) {<br>         return $this->_range($attr,$content,'notin');<br>     }<br> <br>     public function _between($attr,$content){<br>         return $this->_range($attr,$content,'between');<br>     }<br> <br>     public function _notbetween($attr,$content){<br>         return $this->_range($attr,$content,'notbetween');<br>     }<br> <br>     /**<br>      * present标签解析<br>      * 如果某个变量已经设置 则输出内容<br>      * 格式: <present>content</present><br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _present($attr,$content) {<br>         $tag        =   $this->parseXmlAttr($attr,'present');<br>         $name       =   $tag['name'];<br>         $name       =   $this->autoBuildVar($name);<br>         $parseStr   =   '<?php if(isset('.$name.')): ?>'.$content.'<?php endif; ?>';<br>         return $parseStr;<br>     }<br> <br>     /**<br>      * notpresent标签解析<br>      * 如果某个变量没有设置,则输出内容<br>      * 格式: <notpresent>content</notpresent><br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _notpresent($attr,$content) {<br>         $tag        =   $this->parseXmlAttr($attr,'notpresent');<br>         $name       =   $tag['name'];<br>         $name       =   $this->autoBuildVar($name);<br>         $parseStr   =   '<?php if(!isset('.$name.')): ?>'.$content.'<?php endif; ?>';<br>         return $parseStr;<br>     }<br> <br>     /**<br>      * empty标签解析<br>      * 如果某个变量为empty 则输出内容<br>      * 格式: <empty>content</empty><br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _empty($attr,$content) {<br>         $tag        =   $this->parseXmlAttr($attr,'empty');<br>         $name       =   $tag['name'];<br>         $name       =   $this->autoBuildVar($name);<br>         $parseStr   =   '<?php if(empty('.$name.')): ?>'.$content.'<?php endif; ?>';<br>         return $parseStr;<br>     }<br> <br>     public function _notempty($attr,$content) {<br>         $tag        =   $this->parseXmlAttr($attr,'notempty');<br>         $name       =   $tag['name'];<br>         $name       =   $this->autoBuildVar($name);<br>         $parseStr   =   '<?php if(!empty('.$name.')): ?>'.$content.'<?php endif; ?>';<br>         return $parseStr;<br>     }<br> <br>     /**<br>      * 判断是否已经定义了该常量<br>      * <defined>已定义</defined><br>      * @param <type> $attr<br>      * @param <type> $content<br>      * @return string<br>      */<br>     public function _defined($attr,$content) {<br>         $tag        =   $this->parseXmlAttr($attr,'defined');<br>         $name       =   $tag['name'];<br>         $parseStr   =   '<?php if(defined("'.$name.'")): ?>'.$content.'<?php endif; ?>';<br>         return $parseStr;<br>     }<br> <br>     public function _notdefined($attr,$content) {<br>         $tag        =   $this->parseXmlAttr($attr,'_notdefined');<br>         $name       =   $tag['name'];<br>         $parseStr   =   '<?php if(!defined("'.$name.'")): ?>'.$content.'<?php endif; ?>';<br>         return $parseStr;<br>     }<br> <br>     /**<br>      * import 标签解析 <import></import> <br>      * <import></import><br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @param boolean $isFile  是否文件方式<br>      * @param string $type  类型<br>      * @return string<br>      */<br>     public function _import($attr,$content,$isFile=false,$type='') {<br>         $tag        =   $this->parseXmlAttr($attr,'import');<br>         $file       =   isset($tag['file'])?$tag['file']:$tag['href'];<br>         $parseStr   =   '';<br>         $endStr     =   '';<br>         // 判断是否存在加载条件 允许使用函数判断(默认为isset)<br>         if (isset($tag['value'])) {<br>             $varArray  =    explode('|',$tag['value']);<br>             $name      =    array_shift($varArray);<br>             $name      =    $this->autoBuildVar($name);<br>             if (!empty($varArray))<br>                 $name  =    $this->tpl->parseVarFunction($name,$varArray);<br>             else<br>                 $name  =    'isset('.$name.')';<br>             $parseStr .=    '<?php if('.$name.'): ?>';<br>             $endStr    =    '<?php endif; ?>';<br>         }<br>         if($isFile) {<br>             // 根据文件名后缀自动识别<br>             $type  = $type?$type:(!empty($tag['type'])?strtolower($tag['type']):null);<br>             // 文件方式导入<br>             $array =  explode(',',$file);<br>             foreach ($array as $val){<br>                 if (!$type || isset($reset)) {<br>                     $type = $reset = strtolower(substr(strrchr($val, '.'),1));<br>                 }<br>                 switch($type) {<br>                 case 'js':<br>                     $parseStr .= '<script></script>';<br>                     break;<br>                 case 'css':<br>                     $parseStr .= '<link>';<br>                     break;<br>                 case 'php':<br>                     $parseStr .= '<?php require_cache("'.$val.'"); ?>';<br>                     break;<br>                 }<br>             }<br>         }else{<br>             // 命名空间导入模式 默认是js<br>             $type       =   $type?$type:(!empty($tag['type'])?strtolower($tag['type']):'js');<br>             $basepath   =   !empty($tag['basepath'])?$tag['basepath']:__ROOT__.'/Public';<br>             // 命名空间方式导入外部文件<br>             $array      =   explode(',',$file);<br>             foreach ($array as $val){<br>                 list($val,$version) =   explode('?',$val);<br>                 switch($type) {<br>                 case 'js':<br>                     $parseStr .= '<script></script>';<br>                     break;<br>                 case 'css':<br>                     $parseStr .= '<link>';<br>                     break;<br>                 case 'php':<br>                     $parseStr .= '<?php import("'.$val.'"); ?>';<br>                     break;<br>                 }<br>             }<br>         }<br>         return $parseStr.$endStr;<br>     }<br> <br>     // import别名 采用文件方式加载(要使用命名空间必须用import) 例如 <load></load><br>     public function _load($attr,$content) {<br>         return $this->_import($attr,$content,true);<br>     }<br> <br>     // import别名使用 导入css文件 <css></css><br>     public function _css($attr,$content) {<br>         return $this->_import($attr,$content,true,'css');<br>     }<br> <br>     // import别名使用 导入js文件 <js></js><br>     public function _js($attr,$content) {<br>         return $this->_import($attr,$content,true,'js');<br>     }<br> <br>     /**<br>      * assign标签解析<br>      * 在模板中给某个变量赋值 支持变量赋值<br>      * 格式: <assign></assign><br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _assign($attr,$content) {<br>         $tag        =   $this->parseXmlAttr($attr,'assign');<br>         $name       =   $this->autoBuildVar($tag['name']);<br>         if('$'==substr($tag['value'],0,1)) {<br>             $value  =   $this->autoBuildVar(substr($tag['value'],1));<br>         }else{<br>             $value  =   '\''.$tag['value']. '\'';<br>         }<br>         $parseStr   =   '<?php '.$name.' = '.$value.'; ?>';<br>         return $parseStr;<br>     }<br> <br>     /**<br>      * define标签解析<br>      * 在模板中定义常量 支持变量赋值<br>      * 格式: <define></define><br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _define($attr,$content) {<br>         $tag        =   $this->parseXmlAttr($attr,'define');<br>         $name       =   '\''.$tag['name']. '\'';<br>         if('$'==substr($tag['value'],0,1)) {<br>             $value  =   $this->autoBuildVar(substr($tag['value'],1));<br>         }else{<br>             $value  =   '\''.$tag['value']. '\'';<br>         }<br>         $parseStr   =   '<?php define('.$name.', '.$value.'); ?>';<br>         return $parseStr;<br>     }<br>     <br>     /**<br>      * for标签解析<br>      * 格式: <for></for><br>      * @access public<br>      * @param string $attr 标签属性<br>      * @param string $content  标签内容<br>      * @return string<br>      */<br>     public function _for($attr, $content){<br>         //设置默认值<br>         $start         = 0;<br>         $end           = 0;<br>         $step         = 1;<br>         $comparison = 'lt';<br>         $name        = 'i';<br>         $rand       = rand(); //添加随机数,防止嵌套变量冲突<br>         //获取属性<br>         foreach ($this->parseXmlAttr($attr, 'for') as $key => $value){<br>             $value = trim($value);<br>             if(':'==substr($value,0,1))<br>                 $value = substr($value,1);<br>             elseif('$'==substr($value,0,1))<br>                 $value = $this->autoBuildVar(substr($value,1));<br>             switch ($key){<br>                 case 'start':   <br>                     $start      = $value; break;<br>                 case 'end' :    <br>                     $end        = $value; break;<br>                 case 'step':    <br>                     $step       = $value; break;<br>                 case 'comparison':<br>                     $comparison = $value; break;<br>                 case 'name':<br>                     $name       = $value; break;<br>             }<br>         }<br>         <br>         $parseStr   = '<?php $__FOR_START_'.$rand.'__='.$start.';$__FOR_END_'.$rand.'__='.$end.';';<br />         $parseStr  .= 'for($'.$name.'=$__FOR_START_'.$rand.'__;'.$this->parseCondition('$'.$name.' '.$comparison.' $__FOR_END_'.$rand.'__').';$'.$name.'+='.$step.'){ ?>';<br>         $parseStr  .= $content;<br>         $parseStr  .= '<?php } ?>';<br>         return $parseStr;<br>     }<br> <br>     }</type></type></liu21st></liu21st>

AD:真正免费,域名+虚机+企业邮箱=0元

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn