Thinkphp标签解析如何显示到模板页面呢?

今晚在看Thinkphp源码的时候,看到了标签解析的函数。请看具体例子:

/**
     * switch标签解析
     * 格式:
     * <switch name="a.name" >
     * <case value="1" break="false">1</case>
     * <case value="2" >2</case>
     * <default />other
     * </switch>
     * @access public
     * @param string $attr 标签属性
     * @param string $content  标签内容
     * @return string
     */
    public function _switch($attr,$content) {
        $tag        =   $this->parseXmlAttr($attr,'switch');
        $name       =   $tag['name'];
        $varArray   =   explode('|',$name);
        $name       =   array_shift($varArray);
        $name       =   $this->autoBuildVar($name);
        if(count($varArray)>0)
            $name   =   $this->tpl->parseVarFunction($name,$varArray);
        $parseStr   =   '<?php switch('.$name.'): ?>'.$content.'<?php endswitch;?>';
        return $parseStr;
    }
很明显:这个函数返回的是一个字符串。而且返回的字符串都是这种格式:
<?php switch('.$name.'): ?>'.$content.'<?php endswitch;?>
这种格式,如果直接echo 或print_r 输出的话,肯定是不行的。我就在想:怎么让这种格式的字符串起作用呢!

想了很久,终于想到一种办法能让那种格式的字符串起作用了。用file_put_contents这个函数就可以了。

测试代码:

<?php
	/*
	*@Description:
	*
	*/
	function echo_char(){
		$a = 'a';
		$b = 'b';
		$c = 'c';
		$echo = '<?php echo \'\$a is '.$a.' and \$b is '.$b.' \$c is '.$c.'\';?>';
		file_put_contents("test.php", $echo);
	}
	echo_char();
?>

效果:

<?php echo '\$a is a and \$b is b \$c is c';?>

可是这时候,还有<?php  ?>这个格式,用正则处理就好了。我想:在THinkphp中也是这样做的吧。如果不对,请大神指出!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值