1.首先preg_replace()是执行一个正则表达式的搜索和替换的函数
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed
搜索subject中匹配pattern的部分, 以replacement进行替换。
2.preg_replace()在php5.5是废弃了/e修饰符,需要使用 preg_replace_callback()作为替代
3.preg_replace_callback()用法:
preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
说明:
使用:
if (!defined('ECS_ADMIN'))
{
$source = $this->smarty_prefilter_preCompile($source);
}
$source = preg_replace("/<\?[^><]+\?>|<\%[^><]+\%>|<script[^>]+language[^>]*=[^>]*php[^>]*>[^><]*<\/script\s*>/iU", "", $source);
return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);
其中第二个参数function为需要执行的php代码。注:需要使用retrun返回
function select($tag)
{
$a="123456";
return $a;
}