weixin

织梦 dedetag.class.php 模板解释器 DedeTagParse::parseTemplete函数 分析

日期: March 20, 2019 作者:网站维护

织梦里的模板引擎,模板的标签类似这样

{dede:car color='red'} hello {/dede:car}
{dede:car color='blue'/}

模板引擎也就是解释器要做的是输出一个分析后的结果

0=>tagname:car 
   color: red
   inner: hello  
1=>tagname:car
   color: blue
   inner:   

也就是知道模板里有两个标签,其中一个标签名是car,属性color是red,内部文本是hello,另外一个标签名是car,属性color是blue,内部文本是空的。

测试一下parseTemplete函数

parseTemplete函数在文件 includededetag.class.php 里
另外新建模板文件:testTemplets.html
新建测试文件:simpletag.php

testTemplets.html文件内容

{dede:carcolor='red'}hello{/dede:car}
{dede:carcolor='world'/}

simpletag.php文件内容

<?php
//设置常量,不然dedetag.class.php不能运行
define('DEDEINC', '' );
define('DEDE_ENVIRONMENT', 'development');
require_once ('include/dedetag.class.php');

$a = new DedeTagParse();
//LoadTemplate会调用ParseTemplet
$a->LoadTemplate( __dir__.'\testTemplets.html');
print_r($a->CTags);

解释后的结果:

(
    [0] => DedeTag Object
        (
            [IsReplace] => 
            [TagName] => car
            [InnerText] =>  hello 
            [StartPos] => 0
            [EndPos] => 40
            [CAttribute] => DedeAttribute Object
                (
                    [Count] => 1
                    [Items] => Array
                        (
                            [tagname] => car
                            [color] => red
                        )

                )

            [TagValue] => 
            [TagID] => 0
        )

    [1] => DedeTag Object
        (
            [IsReplace] => 
            [TagName] => car
            [InnerText] => 
            [StartPos] => 42
            [EndPos] => 67
            [CAttribute] => DedeAttribute Object
                (
                    [Count] => 1
                    [Items] => Array
                        (
                            [tagname] => car
                            [color] => world
                        )

                )

            [TagValue] => 
            [TagID] => 1
        )

)

parseTemplete分析:

可以参考下面的图片,图片上标了一些变量名,具体过程看代码。

parseTemplete

广告内容为平台自动生成