Fix subst()

master
Vitaliy Filippov 2016-10-31 17:42:19 +03:00
parent 7a6be906c0
commit 86d7f58e00
2 changed files with 12 additions and 5 deletions

View File

@ -3,8 +3,8 @@
/**
* Homepage: http://yourcmc.ru/wiki/VMX::Template
* License: GNU GPLv3 or later
* Author: Vitaliy Filippov, 2006-2015
* Version: V3 (LALR), 2015-08-15
* Author: Vitaliy Filippov, 2006-2016
* Version: V3 (LALR), 2016-10-31
*
* This file contains the implementation of VMX::Template compiler.
* It is only used when a template is compiled in runtime.

View File

@ -7,8 +7,8 @@
*
* Homepage: http://yourcmc.ru/wiki/VMX::Template
* License: GNU GPLv3 or later
* Author: Vitaliy Filippov, 2006-2015
* Version: V3 (LALR), 2016-05-28
* Author: Vitaliy Filippov, 2006-2016
* Version: V3 (LALR), 2016-10-31
*
* The template engine is split into two parts:
* (1) This file - always used when running templates
@ -559,7 +559,14 @@ class VMXTemplate
static function exec_subst($str)
{
$args = func_get_args();
$str = preg_replace_callback('/(?<!\\\\)((?:\\\\\\\\)*)\$(?:([1-9]\d*)|\{([1-9]\d*)\})/is', create_function('$m', 'return $args[$m[2]?$m[2]:$m[3]];'), $str);
$str = preg_replace_callback(
'/(?<!\\\\)((?:\\\\\\\\)*)\$(?:([1-9]\d*)|\{([1-9]\d*)\})/is',
function($m) use($args)
{
return $args[$m[2] ? $m[2] : $m[3]];
},
$str
);
return $str;
}