搜尋
首頁php教程php手册Volist标签 bug改善

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元

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)