写了个测试的例子:
<?php use Wudimei\View\Lexer; $c = '[test'."\r\n" . ']{{[name]}}['."\r"." ]{%[ if name== '' ]%}[ no name ]{%[ endif ]%}[ end" . "\nend ] {# \n comment \n #}[end]"; $l =new Lexer(); $l->scan('a.php', $c );
目前也只是做了按界定符切分字符串,暂时区分了文本类型、界定符、变量内容、代码块内容、注释内容。输出的结果是:
Array
(
[0] => Array
(
[0] => 1
[1] => 1
[2] => 0
[3] => [test
]
[4] => 8
[5] => 1
[6] => Array
(
)
)
[1] => Array
(
[0] => 2
[1] => 2
[2] => 8
[3] => {{
[4] => 2
[5] => 2
[6] => Array
(
)
)
[2] => Array
(
[0] => 2
[1] => 4
[2] => 10
[3] => [name]
[4] => 6
[5] => 3
[6] => Array
(
)
)
[3] => Array
(
[0] => 2
[1] => 10
[2] => 16
[3] => }}
[4] => 2
[5] => 2
[6] => Array
(
)
)
[4] => Array
(
[0] => 2
[1] => 12
[2] => 18
[3] => [
]
[4] => 4
[5] => 1
[6] => Array
(
)
)
[5] => Array
(
[0] => 3
[1] => 3
[2] => 22
[3] => {%
[4] => 2
[5] => 2
[6] => Array
(
)
)
[6] => Array
(
[0] => 3
[1] => 5
[2] => 24
[3] => [ if name== '' ]
[4] => 16
[5] => 4
[6] => Array
(
)
)
[7] => Array
(
[0] => 3
[1] => 21
[2] => 40
[3] => %}
[4] => 2
[5] => 2
[6] => Array
(
)
)
[8] => Array
(
[0] => 3
[1] => 23
[2] => 42
[3] => [ no name ]
[4] => 11
[5] => 1
[6] => Array
(
)
)
[9] => Array
(
[0] => 3
[1] => 34
[2] => 53
[3] => {%
[4] => 2
[5] => 2
[6] => Array
(
)
)
[10] => Array
(
[0] => 3
[1] => 36
[2] => 55
[3] => [ endif ]
[4] => 9
[5] => 4
[6] => Array
(
)
)
[11] => Array
(
[0] => 3
[1] => 45
[2] => 64
[3] => %}
[4] => 2
[5] => 2
[6] => Array
(
)
)
[12] => Array
(
[0] => 3
[1] => 47
[2] => 66
[3] => [ end
end ]
[4] => 12
[5] => 1
[6] => Array
(
)
)
[13] => Array
(
[0] => 4
[1] => 7
[2] => 78
[3] => {#
[4] => 2
[5] => 2
[6] => Array
(
)
)
[14] => Array
(
[0] => 4
[1] => 9
[2] => 80
[3] =>
comment
[4] => 13
[5] => 5
[6] => Array
(
)
)
[15] => Array
(
[0] => 6
[1] => 2
[2] => 93
[3] => #}
[4] => 2
[5] => 2
[6] => Array
(
)
)
[16] => Array
(
[0] => 6
[1] => 4
[2] => 95
[3] => [end]
[4] => 5
[5] => 1
[6] => Array
(
)
)
)