27 lines
876 B
PHP
27 lines
876 B
PHP
<?php
|
|
|
|
class Klein {
|
|
static function render($html, $vars) {
|
|
$data = file_get_contents($html);
|
|
$pattern = array(
|
|
"/{%\s*for\s+(\w+)\s+in\s+(\w+)\s*%}/" => "<?php foreach(\$$2 as \$$1): ?>",
|
|
"/{%\s*if\s+(\w+)\s*%}/" => "<?php if(isset(\$$1)): ?>",
|
|
"/{%\s*block\s+(\w+)\s*%}/" => "<?php function $1() { ?>",
|
|
"/{%\s*endblock\s*%}/" => "<?php } ?>",
|
|
"/{%\s*endfor\s*%}/" => "<?php endforeach; ?>",
|
|
"/{%\s*endif\s*%}/" => "<?php endif; ?>",
|
|
"/{{\s*(\w+)\s*}}/" => "<?php echo \$$1; ?>",
|
|
);
|
|
|
|
$result = $data;
|
|
foreach($pattern as $key => $value) {
|
|
$result = preg_replace($key, $value, $result);
|
|
}
|
|
|
|
extract($vars);
|
|
|
|
ob_start();
|
|
eval(" ?>".$result."<?php ");
|
|
return ob_get_clean();
|
|
}
|
|
}
|