最简洁的PHP模板引擎
最简洁的PHP模板引擎:
<?php // 转换 $data = [ [ 'name' => '第一行', 'type' => 'typec', 'items' => [ ['name' => '名称a',], ['name' => '名称b'] ] ], [ 'name' => '第二行', 'type' => 'typec2', 'items' => [ ['name' => '名称c',], ['name' => '名称d'] ] ] ]; $content = ' {foreach $data as $v} {$v[\'name\']} -- {$v[\'type\']}{n} {foreach $v[\'items\'] as $item} {$item[\'name\']}{n} {/foreach} {/foreach} '; function compile($tpl, $data) { $filestr = ''; $keys = array( '{if %%}' => '<?php if (\1): ?>', '{elseif %%}' => '<?php ; elseif (\1): ?>', '{for %%}' => '<?php for (\1): ?>', '{foreach %%}' => '<?php foreach (\1): ?>', '{while %%}' => '<?php while (\1): ?>', '{/if}' => '<?php endif; ?>', '{/for}' => '<?php endfor; ?>', '{/foreach}' => '<?php endforeach; ?>', '{/while}' => '<?php endwhile; ?>', '{else}' => '<?php ; else: ?>', '{continue}' => '<?php continue; ?>', '{break}' => '<?php break; ?>', '{$%% = %%}' => '<?php $\1 = \2; ?>', '{$%%++}' => '<?php $\1++; ?>', '{$%%--}' => '<?php $\1--; ?>', '{$%%}' => '<?php echo $\1; ?>', '{n}' => '<?php echo "\n"; ?>', '{comment}' => '<?php /*', '{/comment}' => '*/ ?>', '{/*}' => '<?php /*', '{*/}' => '*/ ?>', ); foreach ($keys as $key => $val) { $patterns[] = '#' . str_replace('%%', '(.+)', preg_quote($key, '#')) . '#U'; $replace[] = $val; } $filestr = preg_replace($patterns, $replace, $tpl); eval('?>'.$filestr); } compile($content,$data);
执行结果 :