@ 2014-03-28T11:31:25Z <?php
$source = <<<'SOURCEND'
This is a test
{% block hello %}
This is a test
This is a {{ $test }}
{% end block %}
{{ block('hello') }}
{% for $post => $pappa in $posts %}
{% if $post <= 0 %}
{{ $post==3 ? 'Yes' : 'No' }}
{% end %}
{% end %}
SOURCEND;
function microtwig_compile($source){
function microtwig_parsecmd($cmd){
static $stack = array();
$fragments = preg_split('/\s+/',$cmd);
$cmd = array_shift($fragments);
switch($cmd){
case 'block': return 'function block_'.$fragments[0].'(){'; break;
case 'if':
$stack[] = 'if';
return 'if('.implode(' ',$fragments).'):'; break;
case 'for':
$stack[] = 'foreach';
$tmp = explode(' in ',implode(' ',$fragments));
return 'foreach('.$tmp[1].' as '.$tmp[0].'):'; break;
case 'end':
switch(isset($fragments[0])?$fragments[0]:''){
case 'block': return '}'; break;
default:
switch($peek = array_pop($stack)){
case 'if': return 'endif;'; break;
case 'foreach': return 'endforeach;'; break;
}
break;
}
break;
default: break;
}
}
$cnt=0;
$fragments = array();
$source = str_replace(array('{{','}}'),array('<?php echo','?>'),$source);
foreach(explode('{%',$source) as $tmp) {
foreach(explode('%}',$tmp) as $item) {
$fragments[] = $cnt++%2?'<?php '.microtwig_parsecmd(trim($item)).'?>':$item;
}
}
return implode('',$fragments);
}
echo microtwig_compile($source);
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 5.3.0 - 5.3.29 , 5.4.0 - 5.4.45 , 5.5.0 - 5.5.38 , 5.6.0 - 5.6.40 , 7.0.0 - 7.0.33 , 7.1.0 - 7.1.33 , 7.2.0 - 7.2.33 , 7.3.0 - 7.3.33 , 7.4.0 - 7.4.33 , 8.0.0 - 8.0.30 , 8.1.0 - 8.1.28 , 8.2.0 - 8.2.18 , 8.3.0 - 8.3.6 This is a test
<?php function block_hello(){?>
This is a test
This is a <?php echo $test ?>
<?php }?>
<?php echo block('hello') ?>
<?php foreach($posts as $post => $pappa):?>
<?php if($post <= 0):?>
<?php echo $post==3 ? 'Yes' : 'No' ?>
<?php endif;?>
<?php endforeach;?>
Output for 4.4.2 - 4.4.9 , 5.1.0 - 5.1.6 , 5.2.0 - 5.2.17 Parse error: syntax error, unexpected T_SL in /in/ecDK2 on line 3
Process exited with code 255 . Output for 4.3.0 - 4.3.1 , 4.3.5 - 4.3.11 , 4.4.0 - 4.4.1 , 5.0.0 - 5.0.5 Parse error: parse error, unexpected T_SL in /in/ecDK2 on line 3
Process exited with code 255 . Output for 4.3.2 - 4.3.4 Parse error: parse error in /in/ecDK2 on line 3
Process exited with code 255 . preferences:dark mode live preview
314.5 ms | 401 KiB | 460 Q